diff --git a/include/iselection.h b/include/iselection.h index 9207271..eb38a63 100644 --- a/include/iselection.h +++ b/include/iselection.h @@ -89,6 +89,9 @@ enum EManipulatorMode eScale, eDrag, eClip, + eCreate, + eEntSpawn, + ePatchSpawn }; virtual void SetMode( EMode mode ) = 0; diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 0af1490..6712367 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -1543,7 +1543,7 @@ void Selection_Clone_MakeUnique() NudgeSelection(eNudgeDown, GetGridSize(), GlobalXYWnd_getCurrentViewType()); } } - +void ScaleMode(); // called when the escape key is used (either on the main window or on an inspector) void Selection_Deselect() { @@ -1561,6 +1561,11 @@ void Selection_Deselect() GlobalSelectionSystem().setSelectedAll(false); } } + + if (GlobalSelectionSystem().ManipulatorMode() != SelectionSystem::eCreate) + if (GlobalSelectionSystem().ManipulatorMode() != SelectionSystem::eEntSpawn) + if (GlobalSelectionSystem().ManipulatorMode() != SelectionSystem::ePatchSpawn) + ScaleMode(); } @@ -1614,6 +1619,22 @@ void ClipperToolExport(const Callback &importCallback) importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip); } +void CreateToolExport(const Callback &importCallback) +{ + importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eCreate); +} + +void CreateEToolExport(const Callback &importCallback) +{ + importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eEntSpawn); +} + +void CreatePToolExport(const Callback &importCallback) +{ + importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::ePatchSpawn); +} + + FreeCaller &), TranslateToolExport> g_translatemode_button_caller; Callback &)> g_translatemode_button_callback(g_translatemode_button_caller); ToggleItem g_translatemode_button(g_translatemode_button_callback); @@ -1634,6 +1655,18 @@ FreeCaller &), ClipperToolExport> g_clipper_butt Callback &)> g_clipper_button_callback(g_clipper_button_caller); ToggleItem g_clipper_button(g_clipper_button_callback); +FreeCaller &), CreateToolExport> g_create_button_caller; +Callback &)> g_create_button_callback(g_create_button_caller); +ToggleItem g_create_button(g_create_button_callback); + +FreeCaller &), CreateEToolExport> g_createE_button_caller; +Callback &)> g_createE_button_callback(g_createE_button_caller); +ToggleItem g_createE_button(g_createE_button_callback); + +FreeCaller &), CreatePToolExport> g_createP_button_caller; +Callback &)> g_createP_button_callback(g_createP_button_caller); +ToggleItem g_createP_button(g_createP_button_callback); + void ToolChanged() { g_translatemode_button.update(); @@ -1641,10 +1674,12 @@ void ToolChanged() g_scalemode_button.update(); g_dragmode_button.update(); g_clipper_button.update(); + g_create_button.update(); + g_createE_button.update(); + g_createP_button.update(); } const char *const c_ResizeMode_status = "Drag Tool: move and resize objects"; - void DragMode() { if (g_currentToolMode == DragMode && g_defaultToolMode != DragMode) { @@ -1662,6 +1697,63 @@ void DragMode() } } +const char *const c_CreateMode_status = "Create Tool: draw brush models"; +void CreateMode() +{ + Selection_Deselect(); + if (g_currentToolMode == CreateMode && g_defaultToolMode != CreateMode) { + g_defaultToolMode(); + } else { + g_currentToolMode = CreateMode; + g_currentToolModeSupportsComponentEditing = true; + + OnClipMode(false); + + Sys_Status(c_CreateMode_status); + GlobalSelectionSystem().SetManipulatorMode(SelectionSystem::eCreate); + ToolChanged(); + ModeChangeNotify(); + } +} + +const char *const c_CreateEMode_status = "Create Entity Tool: spawn point entities"; +void CreateEMode() +{ + Selection_Deselect(); + if (g_currentToolMode == CreateEMode && g_defaultToolMode != CreateEMode) { + g_defaultToolMode(); + } else { + g_currentToolMode = CreateEMode; + g_currentToolModeSupportsComponentEditing = true; + + OnClipMode(false); + + Sys_Status(c_CreateEMode_status); + GlobalSelectionSystem().SetManipulatorMode(SelectionSystem::eEntSpawn); + ToolChanged(); + ModeChangeNotify(); + } +} + +const char *const c_CreatePMode_status = "Create Patch Tool: spawn patches"; +void CreatePMode() +{ + Selection_Deselect(); + if (g_currentToolMode == CreatePMode && g_defaultToolMode != CreatePMode) { + g_defaultToolMode(); + } else { + g_currentToolMode = CreatePMode; + g_currentToolModeSupportsComponentEditing = true; + + OnClipMode(false); + + Sys_Status(c_CreatePMode_status); + GlobalSelectionSystem().SetManipulatorMode(SelectionSystem::ePatchSpawn); + ToolChanged(); + ModeChangeNotify(); + } +} + const char *const c_TranslateMode_status = "Translate Tool: translate objects and components"; @@ -2507,9 +2599,12 @@ void Patch_registerShortcuts() void Manipulators_registerShortcuts() { + toggle_add_accelerator("MouseCreate"); + toggle_add_accelerator("MouseCreateE"); + toggle_add_accelerator("MouseCreateP"); toggle_add_accelerator("MouseRotate"); toggle_add_accelerator("MouseTranslate"); - toggle_add_accelerator("MouseScale"); + toggle_add_accelerator("MouseSelect"); toggle_add_accelerator("MouseDrag"); toggle_add_accelerator("ToggleClipper"); } @@ -2578,6 +2673,10 @@ void File_constructToolbar(ui::Toolbar toolbar) void UndoRedo_constructToolbar(ui::Toolbar toolbar) { + + toolbar_append_toggle_button(toolbar, "Select Vertices (V)", "side_vertices.xpm", "DragVertices"); + toolbar_append_toggle_button(toolbar, "Select Edges (E)", "side_edges.xpm", "DragEdges"); + toolbar_append_toggle_button(toolbar, "Select Faces (F)", "side_faces.xpm", "DragFaces"); toolbar_append_button(toolbar, "Undo (CTRL + Z)", "undo.xpm", "Undo"); toolbar_append_button(toolbar, "Redo (CTRL + Y)", "redo.xpm", "Redo"); } @@ -2630,10 +2729,11 @@ void XYWnd_constructToolbar(ui::Toolbar toolbar) void Manipulators_constructToolbar(ui::Toolbar toolbar) { - toolbar_append_toggle_button(toolbar, "Translate (W)", "select_mousetranslate.xpm", "MouseTranslate"); - toolbar_append_toggle_button(toolbar, "Rotate (R)", "select_mouserotate.xpm", "MouseRotate"); - toolbar_append_toggle_button(toolbar, "Scale", "select_mousescale.xpm", "MouseScale"); - toolbar_append_toggle_button(toolbar, "Resize (Q)", "select_mouseresize.xpm", "MouseDrag"); + toolbar_append_toggle_button(toolbar, "Select", "select_mousescale.xpm", "MouseSelect"); + toolbar_append_toggle_button(toolbar, "Translate", "select_mousetranslate.xpm", "MouseTranslate"); + toolbar_append_toggle_button(toolbar, "Rotate", "select_mouserotate.xpm", "MouseRotate"); + toolbar_append_toggle_button(toolbar, "Resize", "select_mouseresize.xpm", "MouseDrag"); + toolbar_append_toggle_button(toolbar, "Create", "select_mousecreate.xpm", "MouseCreate"); Clipper_constructToolbar(toolbar); } @@ -2737,22 +2837,20 @@ ui::Toolbar create_main_sidebar() toolbar.add(btn); }; - toolbar_append_toggle_button(toolbar, "Select Vertices (V)", "side_vertices.xpm", "DragVertices"); - toolbar_append_toggle_button(toolbar, "Select Edges (E)", "side_edges.xpm", "DragEdges"); - toolbar_append_toggle_button(toolbar, "Select Faces (F)", "side_faces.xpm", "DragFaces"); + toolbar_append_toggle_button(toolbar, "Select", "side_select.png", "MouseSelect"); + toolbar_append_toggle_button(toolbar, "Translate", "side_move.png", "MouseTranslate"); + toolbar_append_toggle_button(toolbar, "Rotate", "side_rotate.png", "MouseRotate"); + toolbar_append_toggle_button(toolbar, "Resize", "side_scale.png", "MouseDrag"); + toolbar_append_toggle_button(toolbar, "Clipper", "side_cut.png", "ToggleClipper"); space(); - toolbar_append_toggle_button(toolbar, "Drag (Q)", "side_resize.xpm", "MouseDrag"); - toolbar_append_toggle_button(toolbar, "Translate (W)", "side_transform.xpm", "MouseTranslate"); - toolbar_append_toggle_button(toolbar, "Rotate (R)", "side_rotate.xpm", "MouseRotate"); - toolbar_append_toggle_button(toolbar, "Scale", "side_scale.xpm", "MouseScale"); - toolbar_append_toggle_button(toolbar, "Clipper (X)", "side_clipper.xpm", "ToggleClipper"); - space(); - toolbar_append_button(toolbar, "Entity Inspector (N)", "side_entities.xpm", "ToggleEntityInspector"); - toolbar_append_button(toolbar, "Texture Browser (T)", "side_textures.xpm", "ToggleTextures"); - toolbar_append_button(toolbar, "Surface Inspector (S)", "side_surface.xpm", "SurfaceInspector"); - toolbar_append_button(toolbar, "Patch Inspector (SHIFT + S)", "side_patch.xpm", "PatchInspector"); - space(); - toolbar_append_button(toolbar, "Find Brush", "side_find.xpm", "FindBrush"); + toolbar_append_toggle_button(toolbar, "Create", "side_brush.png", "MouseCreate"); + toolbar_append_toggle_button(toolbar, "Create Entity", "side_entities.png", "MouseCreateE"); + toolbar_append_toggle_button(toolbar, "Create Patch", "side_patch.png", "MouseCreateP"); + space(); + toolbar_append_button(toolbar, "Texture Browser", "side_tex.png", "ToggleTextures"); + toolbar_append_button(toolbar, "Entity Inspector", "side_entspec.png", "ToggleEntityInspector"); + toolbar_append_button(toolbar, "Surface Inspector", "side_surfspec.png", "SurfaceInspector"); + toolbar_append_button(toolbar, "Patch Inspector", "side_patchspec.png", "PatchInspector"); return toolbar; } @@ -3176,7 +3274,7 @@ void MainFrame::Create() SetActiveXY(m_pXYWnd); AddGridChangeCallback(SetGridStatusCaller(*this)); AddGridChangeCallback(ReferenceCaller(*this)); - g_defaultToolMode = DragMode; + g_defaultToolMode = ScaleMode; g_defaultToolMode(); SetStatusText(m_command_status, c_TranslateMode_status); EverySecondTimer_enable(); @@ -3437,9 +3535,12 @@ void MainFrame_Construct() ToggleItem::AddCallbackCaller(g_translatemode_button), Accelerator('W')); GlobalToggles_insert("MouseRotate", makeCallbackF(RotateMode), ToggleItem::AddCallbackCaller(g_rotatemode_button), Accelerator('R')); - GlobalToggles_insert("MouseScale", makeCallbackF(ScaleMode), ToggleItem::AddCallbackCaller(g_scalemode_button)); + GlobalToggles_insert("MouseSelect", makeCallbackF(ScaleMode), ToggleItem::AddCallbackCaller(g_scalemode_button)); GlobalToggles_insert("MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller(g_dragmode_button), Accelerator('Q')); + GlobalToggles_insert("MouseCreate", makeCallbackF(CreateMode), ToggleItem::AddCallbackCaller(g_create_button)); + GlobalToggles_insert("MouseCreateE", makeCallbackF(CreateEMode), ToggleItem::AddCallbackCaller(g_createE_button)); + GlobalToggles_insert("MouseCreateP", makeCallbackF(CreatePMode), ToggleItem::AddCallbackCaller(g_createP_button)); GlobalCommands_insert("ColorSchemeWS", makeCallbackF(ColorScheme_WorldSpawn)); GlobalCommands_insert("ColorSchemeOriginal", makeCallbackF(ColorScheme_Original)); diff --git a/radiant/patchdialog.cpp b/radiant/patchdialog.cpp index e62b296..4c86039 100644 --- a/radiant/patchdialog.cpp +++ b/radiant/patchdialog.cpp @@ -607,6 +607,8 @@ ui::Window PatchInspector::BuildDialog() global_accel_connect_window(window); window_connect_focus_in_clear_focus_widget(window); + + gtk_window_set_resizable(window, FALSE); { diff --git a/radiant/selection.cpp b/radiant/selection.cpp index a8666cc..74f40df 100644 --- a/radiant/selection.cpp +++ b/radiant/selection.cpp @@ -388,7 +388,7 @@ public: void Transform(const Matrix4 &manip2object, const Matrix4 &device2manip, const float x, const float y) { - Vector3 current; + /*Vector3 current; point_on_axis(current, m_axis, device2manip, x, y); Vector3 delta = vector3_subtracted(current, m_start); @@ -401,7 +401,7 @@ public: start[1] == 0 ? 1 : 1 + delta[1] / start[1], start[2] == 0 ? 1 : 1 + delta[2] / start[2] ); - m_scalable.scale(scale); + m_scalable.scale(scale);*/ } void SetAxis(const Vector3 &axis) @@ -427,7 +427,7 @@ public: void Transform(const Matrix4 &manip2object, const Matrix4 &device2manip, const float x, const float y) { - Vector3 current; + /*Vector3 current; point_on_plane(current, device2manip, x, y); Vector3 delta = vector3_subtracted(current, m_start); @@ -440,7 +440,7 @@ public: start[1] == 0 ? 1 : 1 + delta[1] / start[1], start[2] == 0 ? 1 : 1 + delta[2] / start[2] ); - m_scalable.scale(scale); + m_scalable.scale(scale);*/ } }; @@ -1631,11 +1631,11 @@ public: m_free(scalable), m_axis(scalable) { - draw_arrowline(length, m_arrow_x.m_line, 0); + /* draw_arrowline(length, m_arrow_x.m_line, 0); draw_arrowline(length, m_arrow_y.m_line, 1); draw_arrowline(length, m_arrow_z.m_line, 2); - draw_quad(16, m_quad_screen.m_quad); + draw_quad(16, m_quad_screen.m_quad);*/ } Pivot2World &getPivot() @@ -2899,6 +2899,9 @@ public: case eDrag: m_manipulator = &m_drag_manipulator; break; + case eCreate: + m_manipulator = &m_drag_manipulator; + break; case eClip: m_manipulator = &m_clip_manipulator; break; @@ -3017,14 +3020,14 @@ public: bool SelectManipulator(const View &view, const float device_point[2], const float device_epsilon[2]) { - if (!nothingSelected() || (ManipulatorMode() == eDrag && Mode() == eComponent)) { + if (!nothingSelected() || ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate) && Mode() == eComponent)) { #if defined ( DEBUG_SELECTION ) g_render_clipped.destroy(); #endif m_manipulator->setSelected(false); - if (!nothingSelected() || (ManipulatorMode() == eDrag && Mode() == eComponent)) { + if (!nothingSelected() || ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate) && Mode() == eComponent)) { View scissored(view); ConstructSelectionTest(scissored, SelectionBoxForPoint(device_point, device_epsilon)); m_manipulator->testSelect(scissored, GetPivot2World()); @@ -3067,6 +3070,10 @@ public: void SelectPoint(const View &view, const float device_point[2], const float device_epsilon[2], RadiantSelectionSystem::EModifier modifier, bool face) { + if (m_manipulator_mode != eScale) { + return; + } + ASSERT_MESSAGE(fabs(device_point[0]) <= 1.0f && fabs(device_point[1]) <= 1.0f, "point-selection error"); if (modifier == eReplace) { if (face) { @@ -3142,6 +3149,10 @@ public: void SelectArea(const View &view, const float device_point[2], const float device_delta[2], RadiantSelectionSystem::EModifier modifier, bool face) { + if (m_manipulator_mode != eScale) { + return; + } + if (modifier == eReplace) { if (face) { setSelectedAllComponents(false); @@ -3284,7 +3295,7 @@ public: /// \todo Support view-dependent nudge. void NudgeManipulator(const Vector3 &nudge, const Vector3 &view) { - if (ManipulatorMode() == eTranslate || ManipulatorMode() == eDrag) { + if (ManipulatorMode() == eTranslate || (ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) { translateSelected(nudge); } } @@ -3518,7 +3529,7 @@ void RadiantSelectionSystem::endMove() freezeTransforms(); if (Mode() == ePrimitive) { - if (ManipulatorMode() == eDrag) { + if ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) { Scene_SelectAll_Component(false, SelectionSystem::eFace); } } @@ -3538,15 +3549,14 @@ void RadiantSelectionSystem::endMove() command << "rotateTool"; outputRotation(command); } else if (ManipulatorMode() == eScale) { - command << "scaleTool"; - outputScale(command); - } else if (ManipulatorMode() == eDrag) { + //command << "scaleTool"; + //outputScale(command); + } else if ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) { command << "dragTool"; - } + } GlobalUndoSystem().finish(command.c_str()); } - } inline AABB Instance_getPivotBounds(scene::Instance &instance) @@ -3677,13 +3687,6 @@ void RadiantSelectionSystem::ConstructPivot() const matrix4_assign_rotation_for_pivot(m_pivot2world, m_selection.back()); } break; - case eScale: - if (Mode() == eComponent) { - matrix4_assign_rotation_for_pivot(m_pivot2world, m_component_selection.back()); - } else { - matrix4_assign_rotation_for_pivot(m_pivot2world, m_selection.back()); - } - break; default: break; } @@ -3785,9 +3788,9 @@ Single g_mouseUpCallback; const ButtonIdentifier c_button_select = c_buttonLeft; const ButtonIdentifier c_button_texture = c_buttonMiddle; const ModifierFlags c_modifier_manipulator = c_modifierNone; -const ModifierFlags c_modifier_toggle = c_modifierShift; -const ModifierFlags c_modifier_toggle_face = c_modifierShift | c_modifierControl; -const ModifierFlags c_modifier_face = c_modifierControl; +const ModifierFlags c_modifier_toggle = c_modifierNone; +const ModifierFlags c_modifier_toggle_face = c_modifierShift; +const ModifierFlags c_modifier_face = c_modifierShift; const ModifierFlags c_modifier_replace = c_modifierShift | c_modifierAlt; const ModifierFlags c_modifier_replace_face = c_modifier_replace | c_modifier_face; const ModifierFlags c_modifier_apply_texture1 = c_modifierControl | c_modifierShift; @@ -3839,8 +3842,12 @@ public: void testSelect(DeviceVector position) { + if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) { + return; + } + RadiantSelectionSystem::EModifier modifier = modifier_for_state(m_state); - if (modifier != RadiantSelectionSystem::eManipulator) { + DeviceVector delta(position - m_start); if (fabs(delta.x()) > m_epsilon.x() && fabs(delta.y()) > m_epsilon.y()) { DeviceVector delta(position - m_start); @@ -3853,7 +3860,6 @@ public: getSelectionSystem().SelectPoint(*m_view, &position[0], &m_epsilon[0], modifier, (m_state & c_modifier_face) != c_modifierNone); } - } m_start = m_current = DeviceVector(0.0f, 0.0f); draw_area(); @@ -3861,7 +3867,10 @@ public: bool selecting() const { - return m_state != c_modifier_manipulator; + if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) { + return 0; + } + return 1; } void setState(ModifierFlags state) @@ -3997,6 +4006,10 @@ public: g_mouseMovedCallback.insert(MouseEventCallback(Manipulator_::MouseMovedCaller(m_manipulator))); g_mouseUpCallback.insert(MouseEventCallback(Manipulator_::MouseUpCaller(m_manipulator))); } else { + /* TODO: Only when eScale is selected */ + if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) { + return; + } m_selector.mouseDown(devicePosition); g_mouseMovedCallback.insert(MouseEventCallback(Selector_::MouseMovedCaller(m_selector))); g_mouseUpCallback.insert(MouseEventCallback(Selector_::MouseUpCaller(m_selector))); diff --git a/radiant/surfacedialog.cpp b/radiant/surfacedialog.cpp index e3b2299..e6a020b 100644 --- a/radiant/surfacedialog.cpp +++ b/radiant/surfacedialog.cpp @@ -634,6 +634,7 @@ ui::Window SurfaceInspector::BuildDialog() global_accel_connect_window(window); window_connect_focus_in_clear_focus_widget(window); + gtk_window_set_resizable(window, FALSE); { diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index ef261bc..5283173 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -324,6 +324,16 @@ bool ClipMode() return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip; } +bool IsCreateMode() +{ + return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eCreate; +} + +bool IsCreateEMode() +{ + return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eEntSpawn; +} + void NewClipPoint(const Vector3 &point) { if (g_Clip1.Set() == false) { @@ -1235,16 +1245,9 @@ public: void XYWnd::OnContextMenu() { - if (g_xywindow_globals.m_bRightClick == false) { + if (g_xywindow_globals.m_bRightClick == false) return; - } - /* first time, init */ - if (!m_mnuDrop) { - auto menu1 = m_mnuDrop = ui::Menu(ui::New); - EntityClassMenuInserter inserter(menu1); - GlobalEntityClassManager().forEachPoint(inserter); - } if (!m_mnuDropSingle) { auto menu2 = m_mnuDropSingle = ui::Menu(ui::New); create_menu_item_with_mnemonic(menu2, "Make detail", "MakeDetail"); @@ -1275,15 +1278,29 @@ void XYWnd::OnContextMenu() create_menu_item_with_mnemonic(menu3, "_Normalize Color...", "NormalizeColor"); } - if (GlobalSelectionSystem().countSelected() == 0) { - gtk_menu_popup(m_mnuDrop, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); - } else if (GlobalSelectionSystem().countSelected() == 1) { + if (GlobalSelectionSystem().countSelected() == 1) { gtk_menu_popup(m_mnuDropSingle, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); } else { gtk_menu_popup(m_mnuDropMultiple, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); } } +void Selection_Deselect(); +void XYWnd::OnPointMenu() +{ + /* first time, init */ + if (!m_mnuDrop) { + auto menu1 = m_mnuDrop = ui::Menu(ui::New); + EntityClassMenuInserter inserter(menu1); + GlobalEntityClassManager().forEachPoint(inserter); + } + + if (GlobalSelectionSystem().countSelected() != 0) + Selection_Deselect(); + + gtk_menu_popup(m_mnuDrop, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); +} + FreezePointer g_xywnd_freezePointer; unsigned int Move_buttons() @@ -1294,6 +1311,8 @@ unsigned int Move_buttons() void XYWnd_moveDelta(int x, int y, unsigned int state, void *data) { reinterpret_cast( data )->EntityCreate_MouseMove(x, y); + reinterpret_cast( data )->PointCreate_MouseMove(x, y); + reinterpret_cast( data )->BrushCreate_MouseMove(x, y); reinterpret_cast( data )->Scroll(-x, y); } @@ -1405,21 +1424,24 @@ void XYWnd::mouseDown(const WindowVector &position, ButtonIdentifier button, Mod } void CamWnd_DisableMovement(); - void XYWnd::XY_MouseDown(int x, int y, unsigned int buttons) { - if (buttons == Move_buttons()) { - Move_Begin(); - EntityCreate_MouseDown(x, y); +#if 0 + if (IsCreateEMode()) { + PointCreate_MouseDown(x, y); } else if (buttons == Zoom_buttons()) { Zoom_Begin(); } else if (ClipMode() && buttons == Clipper_buttons()) { Clipper_OnLButtonDown(x, y); - } else if (buttons == NewBrushDrag_buttons() && GlobalSelectionSystem().countSelected() == 0) { + } else if (IsCreateMode() && buttons == NewBrushDrag_buttons() && GlobalSelectionSystem().countSelected() == 0) { + /* Only do it in eCreate mode */ NewBrushDrag_Begin(x, y); - } + } if (IsCreateMode()) { + BrushCreate_MouseDown(x, y); + } else if (buttons == Move_buttons()) { + Move_Begin(); + } else if (buttons == MoveCamera_buttons()) { // control mbutton = move camera - else if (buttons == MoveCamera_buttons()) { XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); } // mbutton = angle camera @@ -1429,25 +1451,184 @@ void XYWnd::XY_MouseDown(int x, int y, unsigned int buttons) m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons), modifiers_for_flags(buttons)); } +#else + switch (GlobalSelectionSystem().ManipulatorMode()) { + case SelectionSystem::eScale: + case SelectionSystem::eRotate: + case SelectionSystem::eDrag: + case SelectionSystem::eTranslate: + if (buttons == Zoom_buttons()) { + Zoom_Begin(); + } else if (buttons == Move_buttons()) { + Move_Begin(); + } else if (buttons == MoveCamera_buttons()) { + // control mbutton = move camera + XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else if (buttons == OrientCamera_buttons()) { + // mbutton = angle camera + XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else { + m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::eClip: + if (buttons == Clipper_buttons()) { + Clipper_OnLButtonDown(x, y); + } else if (buttons == Move_buttons()) { + Move_Begin(); + } else if (buttons == MoveCamera_buttons()) { + // control mbutton = move camera + XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else if (buttons == OrientCamera_buttons()) { + // mbutton = angle camera + XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else { + m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::ePatchSpawn: + case SelectionSystem::eCreate: + if (buttons == NewBrushDrag_buttons() && GlobalSelectionSystem().countSelected() == 0) + NewBrushDrag_Begin(x, y); + else if (buttons == Move_buttons() && GlobalSelectionSystem().countSelected() == 0) { + Move_Begin(); + } else if (buttons == MoveCamera_buttons()) { + // control mbutton = move camera + XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else if (buttons == OrientCamera_buttons()) { + // mbutton = angle camera + XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else { + m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::eEntSpawn: + if (buttons == NewBrushDrag_buttons()) + PointCreate_MouseDown(x, y); + else if (buttons == Move_buttons() && GlobalSelectionSystem().countSelected() == 0) { + Move_Begin(); + } else if (buttons == MoveCamera_buttons()) { + // control mbutton = move camera + XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else if (buttons == OrientCamera_buttons()) { + // mbutton = angle camera + XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); + } else { + m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + } +#endif + CamWnd_DisableMovement(); } +void Patch_Plane(); void XYWnd::XY_MouseUp(int x, int y, unsigned int buttons) { - if (m_move_started) { +#if 0 + if (IsCreateEMode()) { + PointCreate_MouseUp(x, y); + } else if (IsCreateMode() && buttons == Move_buttons()) { + BrushCreate_MouseUp(x, y); + } else if (m_move_started) { Move_End(); EntityCreate_MouseUp(x, y); } else if (m_zoom_started) { Zoom_End(); } else if (ClipMode() && buttons == Clipper_buttons()) { Clipper_OnLButtonUp(x, y); - } else if (m_bNewBrushDrag) { + }else if (m_bNewBrushDrag) { m_bNewBrushDrag = false; NewBrushDrag_End(x, y); - } else { + }else { m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), modifiers_for_flags(buttons)); } +#else + switch (GlobalSelectionSystem().ManipulatorMode()) { + case SelectionSystem::eScale: + case SelectionSystem::eRotate: + case SelectionSystem::eDrag: + case SelectionSystem::eTranslate: + if (m_move_started) { + Move_End(); + EntityCreate_MouseUp(x, y); + } else if (m_zoom_started) { + Zoom_End(); + } else { + m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::eClip: + if (buttons == Clipper_buttons()) + Clipper_OnLButtonUp(x, y); + else if (m_move_started) { + Move_End(); + EntityCreate_MouseUp(x, y); + } else if (m_zoom_started) { + Zoom_End(); + } else { + m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::eCreate: + if (buttons == Move_buttons() && GlobalSelectionSystem().countSelected() != 0) { + BrushCreate_MouseUp(x, y); + Selection_Deselect(); + } else if (m_move_started) { + Move_End(); + EntityCreate_MouseUp(x, y); + } else if (m_zoom_started) { + Zoom_End(); + } else if (m_bNewBrushDrag) { + m_bNewBrushDrag = false; + NewBrushDrag_End(x, y); + } else { + m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::eEntSpawn: + if (buttons == Move_buttons() && GlobalSelectionSystem().countSelected() != 0) { + Selection_Deselect(); + } else if (buttons == NewBrushDrag_buttons()) + PointCreate_MouseUp(x, y); + else if (m_move_started) { + Move_End(); + EntityCreate_MouseUp(x, y); + } else if (m_zoom_started) { + Zoom_End(); + } else { + m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + case SelectionSystem::ePatchSpawn: + if (buttons == Move_buttons() && GlobalSelectionSystem().countSelected() != 0) { + BrushCreate_MouseUp(x, y); + Patch_Plane(); + } else if (m_move_started) { + Move_End(); + EntityCreate_MouseUp(x, y); + } else if (m_zoom_started) { + Zoom_End(); + } else if (m_bNewBrushDrag) { + m_bNewBrushDrag = false; + NewBrushDrag_End(x, y); + } else { + m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), + modifiers_for_flags(buttons)); + } + break; + } +#endif } void XYWnd::XY_MouseMoved(int x, int y, unsigned int buttons) @@ -1516,6 +1697,51 @@ void XYWnd::EntityCreate_MouseUp(int x, int y) } } +void XYWnd::BrushCreate_MouseDown(int x, int y) +{ + m_entityCreate = true; + m_entityCreate_x = x; + m_entityCreate_y = y; +} + +void XYWnd::BrushCreate_MouseMove(int x, int y) +{ + if (m_entityCreate && (m_entityCreate_x != x || m_entityCreate_y != y)) { + m_entityCreate = false; + } +} + +void XYWnd::BrushCreate_MouseUp(int x, int y) +{ + if (m_entityCreate) { + m_entityCreate = false; + m_bNewBrushDrag = false; + NewBrushDrag_End(x, y); + } +} + +void XYWnd::PointCreate_MouseDown(int x, int y) +{ + m_entityCreate = true; + m_entityCreate_x = x; + m_entityCreate_y = y; +} + +void XYWnd::PointCreate_MouseMove(int x, int y) +{ + if (m_entityCreate && (m_entityCreate_x != x || m_entityCreate_y != y)) { + m_entityCreate = false; + } +} + +void XYWnd::PointCreate_MouseUp(int x, int y) +{ + if (m_entityCreate) { + m_entityCreate = false; + OnPointMenu(); + } +} + inline float screen_normalised(int pos, unsigned int size) { return ((2.0f * pos) / size) - 1.0f; diff --git a/radiant/xywindow.h b/radiant/xywindow.h index 4edfc63..1ccef30 100644 --- a/radiant/xywindow.h +++ b/radiant/xywindow.h @@ -231,6 +231,8 @@ private: void OriginalButtonDown(guint32 nFlags, int point, int pointy); void OnContextMenu(); + void OnBrushMenu(); + void OnPointMenu(); void PaintSizeInfo(int nDim1, int nDim2, Vector3 &vMinBounds, Vector3 &vMaxBounds); @@ -254,11 +256,17 @@ public: } void EntityCreate_MouseDown(int x, int y); - void EntityCreate_MouseMove(int x, int y); - void EntityCreate_MouseUp(int x, int y); + void BrushCreate_MouseDown(int x, int y); + void BrushCreate_MouseMove(int x, int y); + void BrushCreate_MouseUp(int x, int y); + + void PointCreate_MouseDown(int x, int y); + void PointCreate_MouseMove(int x, int y); + void PointCreate_MouseUp(int x, int y); + void OnEntityCreate(const char *item); VIEWTYPE GetViewType() diff --git a/resources/bitmaps/side_brush.png b/resources/bitmaps/side_brush.png new file mode 100644 index 0000000..7e83db7 Binary files /dev/null and b/resources/bitmaps/side_brush.png differ diff --git a/resources/bitmaps/side_clipper.xpm b/resources/bitmaps/side_clipper.xpm deleted file mode 100644 index bcb87e1..0000000 --- a/resources/bitmaps/side_clipper.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static char *side_clipper[] = { -/* columns rows colors chars-per-pixel */ -"40 32 7 1 ", -" c None", -". c black", -"X c #800000", -"o c red", -"O c #008000", -"+ c green", -"@ c #808080", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" +++++X ", -" ++++++XoXX ", -" +++++++oXoXXXX ", -" ++++++XoXoXoXXXX ", -" OOOOO@oXoXoXoXXXX ", -" OOOOOO@oXoXoXXXXXX ", -" OOOOOOO@oXoXoXXXXXX ", -" OOOOOOOO@oXoXXXXXX@ ", -" OOOOOOOOO@oXoXXXX@@ ", -" OOOOOOOOO@oXoXX@@@ ", -" OOOOOOOOOO@oXX@@@. ", -" OOOOOOOOOOO@o@@@@ ", -" OOOOOOOOOOOO@@@@@ ", -" OOOOOOOOOOOO@@@@ ", -" OOOOOOOOOOO@@@ ", -" OOOOOOOOOO@@@ ", -" OOOOOOO@@ ", -" OOOO@ ", -" OO ", -" ", -" ", -" ", -" ", -" ", -" " -}; diff --git a/resources/bitmaps/side_cut.png b/resources/bitmaps/side_cut.png new file mode 100644 index 0000000..3bec71b Binary files /dev/null and b/resources/bitmaps/side_cut.png differ diff --git a/resources/bitmaps/side_entities.png b/resources/bitmaps/side_entities.png new file mode 100644 index 0000000..c5893d6 Binary files /dev/null and b/resources/bitmaps/side_entities.png differ diff --git a/resources/bitmaps/side_entities.xpm b/resources/bitmaps/side_entities.xpm deleted file mode 100644 index adf3bea..0000000 --- a/resources/bitmaps/side_entities.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static char *side_entities[] = { -/* columns rows colors chars-per-pixel */ -"40 32 7 1 ", -" c None", -". c black", -"X c #0C0C0C", -"o c #808080", -"O c #C0C0C0", -"+ c #F3F3F3", -"@ c white", -/* pixels */ -" ", -" ", -" ", -" ", -" @ ", -" @ @ ", -" @ @O@O@ooo ", -" @@O@O@Oo.oo ", -" @@@@@OOoo.oo ", -" @@@@OOOOo..o ", -" O@@@OOOOo..o ", -" @@@@OOOOo..o ", -" @@OOO@OOOo..o ", -" @OOOOO@Oo...o ", -" @ OOOOOO@O..oo ", -" @ OOOooo@o.o ", -" @ Oooo.oOo ", -" ooo..o o ", -" Oo...o o ", -" Ooo..o ", -" OOoooo ", -" OOOo.. ", -" @@@OOO.. ", -" OOoo.. ", -" O@@Ooo.. ", -" OOoo.o ", -" @ o ", -" X X X ", -" + + + ", -" ", -" ", -" " -}; diff --git a/resources/bitmaps/side_entspec.png b/resources/bitmaps/side_entspec.png new file mode 100644 index 0000000..43448ff Binary files /dev/null and b/resources/bitmaps/side_entspec.png differ diff --git a/resources/bitmaps/side_find.xpm b/resources/bitmaps/side_find.xpm deleted file mode 100644 index 2e5ef63..0000000 --- a/resources/bitmaps/side_find.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *side_find[] = { -/* columns rows colors chars-per-pixel */ -"40 32 6 1 ", -" c None", -". c black", -"X c #800000", -"o c red", -"O c #808000", -"+ c #808080", -/* pixels */ -" ", -" ", -" ", -" ", -" ", -" oooX+ ", -" ooXXooX+ ", -" oXXooXXoX+ ", -" XoooooXXoX ", -" oXoooooXXoX+ ", -" o.ooooXXXoo. ", -" oXoooXXX.Xo+ ", -" +XooXoXX+Xo. ", -" .XXoXXX.OXX ", -" XXoXXX..oX+ ", -" o.XXX+.+oX ", -" X.X+.+oX+ ", -" oooooXX.+ ", -" oXXoX.+ ", -" XoX.+ ", -" XoX. ", -" ooX.+ ", -" XoX.. ", -" XoX+ ", -" oX+ ", -" ", -" ", -" ", -" ", -" ", -" ", -" " -}; diff --git a/resources/bitmaps/side_move.png b/resources/bitmaps/side_move.png new file mode 100644 index 0000000..7975058 Binary files /dev/null and b/resources/bitmaps/side_move.png differ diff --git a/resources/bitmaps/side_patch.png b/resources/bitmaps/side_patch.png new file mode 100644 index 0000000..9d42d58 Binary files /dev/null and b/resources/bitmaps/side_patch.png differ diff --git a/resources/bitmaps/side_patch.xpm b/resources/bitmaps/side_patch.xpm deleted file mode 100644 index 1645017..0000000 --- a/resources/bitmaps/side_patch.xpm +++ /dev/null @@ -1,157 +0,0 @@ -/* XPM */ -static char *side_patch[] = { -/* columns rows colors chars-per-pixel */ -"40 32 119 2 ", -" c None", -". c #0C0C0C", -"X c #0C0E23", -"o c #0C0E24", -"O c #0D0F27", -"+ c #0D1028", -"@ c #0F122D", -"# c #101330", -"$ c #111433", -"% c #131638", -"& c #13173A", -"* c #450000", -"= c #4F0000", -"- c #520000", -"; c #5C0000", -": c #5D0000", -"> c #670000", -", c #690000", -"< c #740000", -"1 c #7F0000", -"2 c #7F0100", -"3 c #7F0001", -"4 c #7F0101", -"5 c #171B42", -"6 c #1E235A", -"7 c #1E245B", -"8 c #232968", -"9 c #232969", -"0 c #242A6B", -"q c #242A6C", -"w c #262D72", -"e c #272D74", -"r c #2E3477", -"t c #29307B", -"y c #29317C", -"u c #800100", -"i c #800001", -"p c #800101", -"a c #820202", -"s c #8C0C0C", -"d c #8D0E0C", -"f c #8D0C0E", -"g c #8D0E0E", -"h c #981919", -"j c #991919", -"k c #981A19", -"l c #991A19", -"z c #98191A", -"x c #99191A", -"c c #981A1A", -"v c #991A1A", -"b c #9F2420", -"n c #9F2421", -"m c #A12420", -"M c #A12421", -"N c #A42424", -"B c #AC302D", -"V c #AD312E", -"C c #B03131", -"Z c #B13131", -"A c #B33331", -"S c #B33133", -"D c #B13333", -"F c #B33333", -"G c #B73C38", -"H c #B93D3A", -"J c #C44846", -"K c #D05452", -"L c #DC5F5C", -"P c #DD5F5C", -"I c #DC5F5D", -"U c #DC615C", -"Y c #DD615C", -"T c #DE625E", -"R c #E76B69", -"E c #EA6D6A", -"W c #F47876", -"Q c #F47976", -"! c #F47877", -"~ c #F67876", -"^ c #2C3485", -"/ c #2D3586", -"( c #2E3689", -") c #2E368B", -"_ c #323983", -"` c #30388F", -"' c #313A93", -"] c #323A95", -"[ c #323B96", -"{ c #383F91", -"} c #333D9A", -"| c #343D9C", -" . c #3E4492", -".. c #4C52A5", -"X. c #565CB1", -"o. c #6B70B7", -"O. c #7B7FBA", -"+. c #4550C1", -"@. c #4651C1", -"#. c #4E58C4", -"$. c #4F59C4", -"%. c #535DC6", -"&. c #606ACA", -"*. c #7980CB", -"=. c #7F86D4", -"-. c #FF8482", -";. c #FF8582", -":. c #FF8584", -">. c #878DD0", -",. c #8189D5", -"<. c #838BD6", -"1. c #868DD7", -"2. c #8990D8", -"3. c #8A91D8", -"4. c #8B92D8", -"5. c #9198DA", -"6. c #9399DB", -"7. c #989EDD", -"8. c #F3F3F3", -/* pixels */ -" ", -" ", -" D * ", -" D :.N W B - m * ", -" D -.N W k E g T a K < J , H ; B = b * ", -" r D -.N W j E g T a K < J , H ; C = m * ", -" .O D :.N W j E g T a K < J , H : B = b * ", -" O & _ S -.N W j E f T a K < J , H ; C = m * ", -" ..X 7 q Z -.N W k E g T 1 K < J , H : B = m * ", -" @ + e y { Z -.N ! k E f T 1 K < J , H : B = b * ", -" X.X 6 9 ' } D -.N ~ k E f T a K < J , H ; B = b * ", -" $ O ^ w ) $.*. Z -.N W x E g T 1 K < J , H : B = b * ", -" o.O & 9 ] | %.2. D -.N W k E g T 1 K < J , H ; B = b * ", -" 5 X ^ w ` +.=.=.1. D -.N W k E g T 1 K < J , H ; B = m * ", -" O.O & 9 t ) #.=.2.6. C -.N W k E g L 1 K < J , H ; B = m * ", -" # X 6 9 ` X.&.5.2.7. C -.N W k E g L a K < J , H ; C = b * ", -" + + e y ^ $.,.2.6.7. D -.N W k E g L a K < J , H ; B = b * ", -" q ] | &.6.2. C -.N W x E f L 1 K < J , H ; B = b * ", -" C -.N W k E s P a K < J , H ; B = m * ", -" C -.N W k E s P 1 K < J , G ; B = b * ", -" C -.N W k E s L 1 K < J , G ; B = m * ", -" C -.N W k E s T 1 K < J , G ; B = m * ", -" D -.N W h R s L 1 K < J , G ; B = m * ", -" C -.N W h R s U 1 K < J , G : B = b * ", -" -.N W k R s L 1 K < J > G : B = m ", -" k R s L a K < J > G : ", -" ", -" . . . ", -" 8. 8. 8. ", -" ", -" ", -" " -}; diff --git a/resources/bitmaps/side_patchspec.png b/resources/bitmaps/side_patchspec.png new file mode 100644 index 0000000..a404350 Binary files /dev/null and b/resources/bitmaps/side_patchspec.png differ diff --git a/resources/bitmaps/side_resize.xpm b/resources/bitmaps/side_resize.xpm deleted file mode 100644 index 354f6f5..0000000 --- a/resources/bitmaps/side_resize.xpm +++ /dev/null @@ -1,43 +0,0 @@ -/* XPM */ -static char *side_resize[] = { -/* columns rows colors chars-per-pixel */ -"40 32 5 1 ", -" c None", -". c black", -"X c #3E3E3E", -"o c gray43", -"O c #F8F8F8", -/* pixels */ -" ", -" ", -" ... ... ... ", -" . ", -" . . ", -" . . ", -" . ", -" . ", -" . . ", -" . . ", -" . ", -" . OOOOOOO ", -" . . OOOOOOOOOOOOOOOo ", -" . . XOOOOOOOOOOOOOOOOoo ", -" . XXXXXXOOOOOOOOOoooo ", -" ... ... ... XXXXXXXXXXOOOOooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXoooo ", -" XXXXXXXXXXooo ", -" XXXXXXXoo ", -" XXXXo ", -" X ", -" ", -" " -}; diff --git a/resources/bitmaps/side_rotate.png b/resources/bitmaps/side_rotate.png new file mode 100644 index 0000000..c9cd0d8 Binary files /dev/null and b/resources/bitmaps/side_rotate.png differ diff --git a/resources/bitmaps/side_rotate.xpm b/resources/bitmaps/side_rotate.xpm deleted file mode 100644 index ab8d223..0000000 --- a/resources/bitmaps/side_rotate.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *side_rotate[] = { -/* columns rows colors chars-per-pixel */ -"40 32 6 1 ", -" c None", -". c black", -"X c #3E3E3E", -"o c gray43", -"O c blue", -"+ c #F8F8F8", -/* pixels */ -" ", -" ", -" ", -" OOOO ", -" OO OO ", -" O O ", -" O ........ O ", -" O . . O ", -" O . . O ", -" O . .OOOOO ", -" O . . OOO ", -" O . . O +++++++ ", -" O . . +++++++++++++++o ", -" O ........ X++++++++++++++++oo ", -" O XXXXXX+++++++++oooo ", -" OO XXXXXXXXXX++++ooooo ", -" OO XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXoooo ", -" XXXXXXXXXXooo ", -" XXXXXXXoo ", -" XXXXo ", -" X ", -" ", -" " -}; diff --git a/resources/bitmaps/side_scale.png b/resources/bitmaps/side_scale.png new file mode 100644 index 0000000..b82f339 Binary files /dev/null and b/resources/bitmaps/side_scale.png differ diff --git a/resources/bitmaps/side_scale.xpm b/resources/bitmaps/side_scale.xpm deleted file mode 100644 index 0362663..0000000 --- a/resources/bitmaps/side_scale.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *side_scale[] = { -/* columns rows colors chars-per-pixel */ -"40 32 6 1 ", -" c None", -". c black", -"X c #3E3E3E", -"o c gray43", -"O c blue", -"+ c #F8F8F8", -/* pixels */ -" ", -" ", -" ", -" OOO OOO OOO ", -" ", -" O OOOOO O ", -" O OOOO O ", -" O OOO O ", -" O OO ", -" ........ O O ", -" . . O ", -" . . O +++++++ ", -" . . +++++++++++++++o ", -" . . O++++++++++++++++oo ", -" . . OXXXXX+++++++++oooo ", -" . . OXXXXXXXXX++++ooooo ", -" ........ OOO XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXoooo ", -" XXXXXXXXXXooo ", -" XXXXXXXoo ", -" XXXXo ", -" X ", -" ", -" " -}; diff --git a/resources/bitmaps/side_select.png b/resources/bitmaps/side_select.png new file mode 100644 index 0000000..8adefe5 Binary files /dev/null and b/resources/bitmaps/side_select.png differ diff --git a/resources/bitmaps/side_surface.xpm b/resources/bitmaps/side_surface.xpm deleted file mode 100644 index c5849fa..0000000 --- a/resources/bitmaps/side_surface.xpm +++ /dev/null @@ -1,48 +0,0 @@ -/* XPM */ -static char *side_surface[] = { -/* columns rows colors chars-per-pixel */ -"40 32 10 1 ", -" c None", -". c #0C0C0C", -"X c #800000", -"o c red", -"O c #FF0100", -"+ c #FF0001", -"@ c #008000", -"# c yellow", -"$ c #C3C3C3", -"% c #F3F3F3", -/* pixels */ -" ", -" ", -" $$$$ ", -" $oooo$$$ ", -" $o$$$$ooo$ ", -" $o$ $$o$ ", -" $oo$ $o$ ", -" $oo$ $o$ ", -" $oo$ $o$ ", -" $oo$$$$ $ ", -" $oooooo$$ ", -" $ooooooo$ ####### ", -" $$$ooooo$ ###############@ ", -" $$$ooo$ X################@@ ", -" $ $oo$ XXXXXX#########@@@@ ", -" $o$ $oo$ XXXXXXXXXX####@@@@@ ", -" $o$ $oo$ XXXXXXXXXXXXX@@@@@ ", -" $oo$ $oo$ XXXXXXXXXXXXX@@@@@ ", -" $oo$$ $$o$ XXXXXXXXXXXXX@@@@@ ", -" $o$oo$$$oo$ XXXXXXXXXXXX@@@@@ ", -" $ $$ooo$$ XXXXXXXXXXXX@@@@@ ", -" $$$ XXXXXXXXXXXX@@@@@ ", -" XXXXXXXXXXXX@@@@@ ", -" XXXXXXXXXXXX@@@@@ ", -" XXXXXXXXXXXX@@@@@ ", -" XXXXXXXXXXX@@@@ ", -" XXXXXXXXXX@@@ ", -" . . . XXXXXXX@@ ", -" % % % XXXX@ ", -" X ", -" ", -" " -}; diff --git a/resources/bitmaps/side_surfspec.png b/resources/bitmaps/side_surfspec.png new file mode 100644 index 0000000..e565947 Binary files /dev/null and b/resources/bitmaps/side_surfspec.png differ diff --git a/resources/bitmaps/side_tex.png b/resources/bitmaps/side_tex.png new file mode 100644 index 0000000..2c9d3b8 Binary files /dev/null and b/resources/bitmaps/side_tex.png differ diff --git a/resources/bitmaps/side_textures.xpm b/resources/bitmaps/side_textures.xpm deleted file mode 100644 index 25c2197..0000000 --- a/resources/bitmaps/side_textures.xpm +++ /dev/null @@ -1,148 +0,0 @@ -/* XPM */ -static char *side_textures[] = { -/* columns rows colors chars-per-pixel */ -"40 32 110 2 ", -" c None", -". c #0C0C0C", -"X c #240C04", -"o c #291207", -"O c #3C1D09", -"+ c #381D14", -"@ c #372116", -"# c #3E271F", -"$ c #452B21", -"% c #4E372F", -"& c #533C33", -"* c #5A3F34", -"= c #5B402B", -"- c #62463A", -"; c #63483D", -": c #6F543F", -"> c #634B44", -", c #694F42", -"< c #6A5248", -"1 c #725647", -"2 c #72574B", -"3 c #775D50", -"4 c #7C6251", -"5 c #FF0000", -"6 c #9E5113", -"7 c #AC4F0C", -"8 c #A5540F", -"9 c #B2530F", -"0 c #A05116", -"q c #AD5514", -"w c #AC5B1D", -"e c #B45514", -"r c #B35A15", -"t c #B95914", -"y c #B45C1B", -"u c #BB5E1B", -"i c #B36317", -"p c #B6641F", -"a c #BB631C", -"s c #BB6B1C", -"d c #AD5F22", -"f c #B55F20", -"g c #B85D22", -"h c #B46425", -"j c #BB6621", -"k c #BB6A22", -"l c #B76729", -"z c #B46C2B", -"x c #BC6E2B", -"c c #BF702B", -"v c #BC6932", -"b c #BE7130", -"n c #C16A1E", -"m c #C26724", -"M c #C26C25", -"N c #C36C29", -"B c #C96D28", -"V c #C77326", -"C c #C4732B", -"Z c #C9732C", -"A c #CA792E", -"S c #C37432", -"D c #CB7431", -"F c #C77C33", -"G c #C97A33", -"H c #C27738", -"J c #CC7D3B", -"K c #D27737", -"L c #D17A3E", -"P c #856856", -"I c #8E7362", -"U c #927565", -"Y c #CC7E42", -"T c #CE823B", -"R c #D1853E", -"E c #A28975", -"W c #A3877B", -"Q c #AE917F", -"! c #CE8342", -"~ c #D78941", -"^ c #D18E4D", -"/ c #DD9555", -"( c #637BB5", -") c #6681B5", -"_ c #6A82B7", -"` c #6781B9", -"' c #6C85BB", -"] c #6F88BD", -"[ c #728CBD", -"{ c #728CC1", -"} c #788EC0", -"| c #7791C4", -" . c #7B94C3", -".. c #7F9AC5", -"X. c #7C95C9", -"o. c #7F9AC8", -"O. c #B29681", -"+. c #B29583", -"@. c #B59888", -"#. c #B99C8A", -"$. c #BAA393", -"%. c #C8AD98", -"&. c #839ECE", -"*. c #84A0C9", -"=. c #88A4C8", -"-. c #87A2D1", -";. c #8FA9D6", -":. c #9CB5DD", -">. c #C3C3C3", -",. c #F3F3F3", -/* pixels */ -" ", -" ", -" ", -" >.>.>.>.>.>.>.>.>.>.>.>.>.>. ", -" >.5 5 5 5 5 5 5 5 5 5 5 5 5 5 >. ", -" >.5 >.>.>.>.>.5 5 >.>.>.>.>.5 >. ", -" >.5 >. >.5 5 >. >.5 >. ", -" >.5 >. >.5 5 >. >.5 >. ", -" >.5 >. >.5 5 >. >.5 >. ", -" >. >.5 5 >. >. ", -" >.5 5 >. ", -" >.5 5 >. O +.1 W - + $ ", -" >.5 5 >. E : O.#.@.U < * > X & X 3 4 * ' ", -" >.5 5 >. k o $.I %.Q I U - > $ * # % o ; I ' [ ", -" >.5 5 >. C F x x k v P 1 2 - < > % X @ ' _ ) ' ", -" >.5 5 >. C F F k h S 6 x J q & & * X { ] ] | [ ", -" >.5 5 >. h G F j r S w w Y e u p N { } X.| . ", -" >.5 5 >. 8 T C D a S c d S q N N j [ [ X.&.&. ", -" >.>.>.5 5 >.>.>. p R S Z N G c b z q j j k { { ' ' ' ", -" >.5 5 5 5 5 5 5 5 >. R R j B J z / ! S N M x | [ ( ( ( ", -" >.>.>.>.>.>.>.>. G C C a x z ^ / g N D G &.;.&.[ ' ", -" ! x j d l h J L w n m V _ [ .:.' ", -" R m m N Y d x S g t s C ( ( X. .( ", -" F N 7 C v 6 Y D e u B M ( ( ` ( ( ", -" F M 9 m h f K B r u B V ( ( ( ( ( ", -" n a r u e r a s B k C ' ( ( _ ", -" a i s n 9 n s A A s | ' [ ", -" . . . n s s s s A V ..-. ", -" ,. ,. ,. V s G C =. ", -" C ", -" ", -" " -}; diff --git a/resources/bitmaps/side_transform.xpm b/resources/bitmaps/side_transform.xpm deleted file mode 100644 index b7e6f85..0000000 --- a/resources/bitmaps/side_transform.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *side_transform[] = { -/* columns rows colors chars-per-pixel */ -"40 32 6 1 ", -" c None", -". c black", -"X c #3E3E3E", -"o c gray43", -"O c blue", -"+ c #F8F8F8", -/* pixels */ -" ", -" ", -" ", -" ....... ", -" . . ", -" . . ", -" . . O ", -" . . OO ", -" . . OOO ", -" . .OOOOOOO ", -" . . OOO ", -" . . OO +++++++ ", -" . . O +++++++++++++++o ", -" . . X++++++++++++++++oo ", -" . . XXXXXX+++++++++oooo ", -" . . XXXXXXXXXX++++ooooo ", -" ....... XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXXooooo ", -" XXXXXXXXXXXoooo ", -" XXXXXXXXXXooo ", -" XXXXXXXoo ", -" XXXXo ", -" X ", -" ", -" " -}; diff --git a/resources/bitmaps/ws_icons.xcf b/resources/bitmaps/ws_icons.xcf new file mode 100644 index 0000000..1cf81cd Binary files /dev/null and b/resources/bitmaps/ws_icons.xcf differ diff --git a/tools/vmap/light.c b/tools/vmap/light.c index fd1caa7..205fa28 100644 --- a/tools/vmap/light.c +++ b/tools/vmap/light.c @@ -1273,6 +1273,7 @@ int LightContributionToSample( trace_t *trace ){ to the surface normal the bigger is the amount of radiosity received. So, for preserving the directional lights contributions, we scale down the radiosity contribution. It's a hack, but there's a reason behind it */ +#if 1 if ( bouncing ) { addDeluxe *= addDeluxeBounceScale; /* better NOT increase it beyond the original value @@ -1280,7 +1281,8 @@ int LightContributionToSample( trace_t *trace ){ addDeluxe = 0.00390625f; */ } - +#endif + if ( doAddDeluxe ) { VectorScale( trace->direction, addDeluxe, trace->directionContribution ); } @@ -3013,6 +3015,8 @@ int LightMain( int argc, char **argv ){ } } } + + lightAngleHL = qfalse; /* fix up lightmap search power */ if ( lightmapMergeSize ) {