Work towards redoing some of the UX has begun, affecting our side-bar, the

way we spawn and manipulate objects... etc. Mail the feedback.
This commit is contained in:
Marco Cawthorne 2020-12-19 21:17:19 +01:00
parent 925920b270
commit 79b2c431b2
31 changed files with 434 additions and 738 deletions

View File

@ -89,6 +89,9 @@ enum EManipulatorMode
eScale, eScale,
eDrag, eDrag,
eClip, eClip,
eCreate,
eEntSpawn,
ePatchSpawn
}; };
virtual void SetMode( EMode mode ) = 0; virtual void SetMode( EMode mode ) = 0;

View File

@ -1543,7 +1543,7 @@ void Selection_Clone_MakeUnique()
NudgeSelection(eNudgeDown, GetGridSize(), GlobalXYWnd_getCurrentViewType()); NudgeSelection(eNudgeDown, GetGridSize(), GlobalXYWnd_getCurrentViewType());
} }
} }
void ScaleMode();
// called when the escape key is used (either on the main window or on an inspector) // called when the escape key is used (either on the main window or on an inspector)
void Selection_Deselect() void Selection_Deselect()
{ {
@ -1561,6 +1561,11 @@ void Selection_Deselect()
GlobalSelectionSystem().setSelectedAll(false); 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<void(bool)> &importCallback)
importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip); importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip);
} }
void CreateToolExport(const Callback<void(bool)> &importCallback)
{
importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eCreate);
}
void CreateEToolExport(const Callback<void(bool)> &importCallback)
{
importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eEntSpawn);
}
void CreatePToolExport(const Callback<void(bool)> &importCallback)
{
importCallback(GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::ePatchSpawn);
}
FreeCaller<void(const Callback<void(bool)> &), TranslateToolExport> g_translatemode_button_caller; FreeCaller<void(const Callback<void(bool)> &), TranslateToolExport> g_translatemode_button_caller;
Callback<void(const Callback<void(bool)> &)> g_translatemode_button_callback(g_translatemode_button_caller); Callback<void(const Callback<void(bool)> &)> g_translatemode_button_callback(g_translatemode_button_caller);
ToggleItem g_translatemode_button(g_translatemode_button_callback); ToggleItem g_translatemode_button(g_translatemode_button_callback);
@ -1634,6 +1655,18 @@ FreeCaller<void(const Callback<void(bool)> &), ClipperToolExport> g_clipper_butt
Callback<void(const Callback<void(bool)> &)> g_clipper_button_callback(g_clipper_button_caller); Callback<void(const Callback<void(bool)> &)> g_clipper_button_callback(g_clipper_button_caller);
ToggleItem g_clipper_button(g_clipper_button_callback); ToggleItem g_clipper_button(g_clipper_button_callback);
FreeCaller<void(const Callback<void(bool)> &), CreateToolExport> g_create_button_caller;
Callback<void(const Callback<void(bool)> &)> g_create_button_callback(g_create_button_caller);
ToggleItem g_create_button(g_create_button_callback);
FreeCaller<void(const Callback<void(bool)> &), CreateEToolExport> g_createE_button_caller;
Callback<void(const Callback<void(bool)> &)> g_createE_button_callback(g_createE_button_caller);
ToggleItem g_createE_button(g_createE_button_callback);
FreeCaller<void(const Callback<void(bool)> &), CreatePToolExport> g_createP_button_caller;
Callback<void(const Callback<void(bool)> &)> g_createP_button_callback(g_createP_button_caller);
ToggleItem g_createP_button(g_createP_button_callback);
void ToolChanged() void ToolChanged()
{ {
g_translatemode_button.update(); g_translatemode_button.update();
@ -1641,10 +1674,12 @@ void ToolChanged()
g_scalemode_button.update(); g_scalemode_button.update();
g_dragmode_button.update(); g_dragmode_button.update();
g_clipper_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"; const char *const c_ResizeMode_status = "Drag Tool: move and resize objects";
void DragMode() void DragMode()
{ {
if (g_currentToolMode == DragMode && g_defaultToolMode != 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"; const char *const c_TranslateMode_status = "Translate Tool: translate objects and components";
@ -2507,9 +2599,12 @@ void Patch_registerShortcuts()
void Manipulators_registerShortcuts() void Manipulators_registerShortcuts()
{ {
toggle_add_accelerator("MouseCreate");
toggle_add_accelerator("MouseCreateE");
toggle_add_accelerator("MouseCreateP");
toggle_add_accelerator("MouseRotate"); toggle_add_accelerator("MouseRotate");
toggle_add_accelerator("MouseTranslate"); toggle_add_accelerator("MouseTranslate");
toggle_add_accelerator("MouseScale"); toggle_add_accelerator("MouseSelect");
toggle_add_accelerator("MouseDrag"); toggle_add_accelerator("MouseDrag");
toggle_add_accelerator("ToggleClipper"); toggle_add_accelerator("ToggleClipper");
} }
@ -2578,6 +2673,10 @@ void File_constructToolbar(ui::Toolbar toolbar)
void UndoRedo_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, "Undo (CTRL + Z)", "undo.xpm", "Undo");
toolbar_append_button(toolbar, "Redo (CTRL + Y)", "redo.xpm", "Redo"); 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) void Manipulators_constructToolbar(ui::Toolbar toolbar)
{ {
toolbar_append_toggle_button(toolbar, "Translate (W)", "select_mousetranslate.xpm", "MouseTranslate"); toolbar_append_toggle_button(toolbar, "Select", "select_mousescale.xpm", "MouseSelect");
toolbar_append_toggle_button(toolbar, "Rotate (R)", "select_mouserotate.xpm", "MouseRotate"); toolbar_append_toggle_button(toolbar, "Translate", "select_mousetranslate.xpm", "MouseTranslate");
toolbar_append_toggle_button(toolbar, "Scale", "select_mousescale.xpm", "MouseScale"); toolbar_append_toggle_button(toolbar, "Rotate", "select_mouserotate.xpm", "MouseRotate");
toolbar_append_toggle_button(toolbar, "Resize (Q)", "select_mouseresize.xpm", "MouseDrag"); toolbar_append_toggle_button(toolbar, "Resize", "select_mouseresize.xpm", "MouseDrag");
toolbar_append_toggle_button(toolbar, "Create", "select_mousecreate.xpm", "MouseCreate");
Clipper_constructToolbar(toolbar); Clipper_constructToolbar(toolbar);
} }
@ -2737,22 +2837,20 @@ ui::Toolbar create_main_sidebar()
toolbar.add(btn); toolbar.add(btn);
}; };
toolbar_append_toggle_button(toolbar, "Select Vertices (V)", "side_vertices.xpm", "DragVertices"); toolbar_append_toggle_button(toolbar, "Select", "side_select.png", "MouseSelect");
toolbar_append_toggle_button(toolbar, "Select Edges (E)", "side_edges.xpm", "DragEdges"); toolbar_append_toggle_button(toolbar, "Translate", "side_move.png", "MouseTranslate");
toolbar_append_toggle_button(toolbar, "Select Faces (F)", "side_faces.xpm", "DragFaces"); 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(); space();
toolbar_append_toggle_button(toolbar, "Drag (Q)", "side_resize.xpm", "MouseDrag"); toolbar_append_toggle_button(toolbar, "Create", "side_brush.png", "MouseCreate");
toolbar_append_toggle_button(toolbar, "Translate (W)", "side_transform.xpm", "MouseTranslate"); toolbar_append_toggle_button(toolbar, "Create Entity", "side_entities.png", "MouseCreateE");
toolbar_append_toggle_button(toolbar, "Rotate (R)", "side_rotate.xpm", "MouseRotate"); toolbar_append_toggle_button(toolbar, "Create Patch", "side_patch.png", "MouseCreateP");
toolbar_append_toggle_button(toolbar, "Scale", "side_scale.xpm", "MouseScale"); space();
toolbar_append_toggle_button(toolbar, "Clipper (X)", "side_clipper.xpm", "ToggleClipper"); toolbar_append_button(toolbar, "Texture Browser", "side_tex.png", "ToggleTextures");
space(); toolbar_append_button(toolbar, "Entity Inspector", "side_entspec.png", "ToggleEntityInspector");
toolbar_append_button(toolbar, "Entity Inspector (N)", "side_entities.xpm", "ToggleEntityInspector"); toolbar_append_button(toolbar, "Surface Inspector", "side_surfspec.png", "SurfaceInspector");
toolbar_append_button(toolbar, "Texture Browser (T)", "side_textures.xpm", "ToggleTextures"); toolbar_append_button(toolbar, "Patch Inspector", "side_patchspec.png", "PatchInspector");
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");
return toolbar; return toolbar;
} }
@ -3176,7 +3274,7 @@ void MainFrame::Create()
SetActiveXY(m_pXYWnd); SetActiveXY(m_pXYWnd);
AddGridChangeCallback(SetGridStatusCaller(*this)); AddGridChangeCallback(SetGridStatusCaller(*this));
AddGridChangeCallback(ReferenceCaller<MainFrame, void(), XY_UpdateAllWindows>(*this)); AddGridChangeCallback(ReferenceCaller<MainFrame, void(), XY_UpdateAllWindows>(*this));
g_defaultToolMode = DragMode; g_defaultToolMode = ScaleMode;
g_defaultToolMode(); g_defaultToolMode();
SetStatusText(m_command_status, c_TranslateMode_status); SetStatusText(m_command_status, c_TranslateMode_status);
EverySecondTimer_enable(); EverySecondTimer_enable();
@ -3437,9 +3535,12 @@ void MainFrame_Construct()
ToggleItem::AddCallbackCaller(g_translatemode_button), Accelerator('W')); ToggleItem::AddCallbackCaller(g_translatemode_button), Accelerator('W'));
GlobalToggles_insert("MouseRotate", makeCallbackF(RotateMode), ToggleItem::AddCallbackCaller(g_rotatemode_button), GlobalToggles_insert("MouseRotate", makeCallbackF(RotateMode), ToggleItem::AddCallbackCaller(g_rotatemode_button),
Accelerator('R')); 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), GlobalToggles_insert("MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller(g_dragmode_button),
Accelerator('Q')); 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("ColorSchemeWS", makeCallbackF(ColorScheme_WorldSpawn));
GlobalCommands_insert("ColorSchemeOriginal", makeCallbackF(ColorScheme_Original)); GlobalCommands_insert("ColorSchemeOriginal", makeCallbackF(ColorScheme_Original));

View File

@ -607,6 +607,8 @@ ui::Window PatchInspector::BuildDialog()
global_accel_connect_window(window); global_accel_connect_window(window);
window_connect_focus_in_clear_focus_widget(window); window_connect_focus_in_clear_focus_widget(window);
gtk_window_set_resizable(window, FALSE);
{ {

View File

@ -388,7 +388,7 @@ public:
void Transform(const Matrix4 &manip2object, const Matrix4 &device2manip, const float x, const float y) 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); point_on_axis(current, m_axis, device2manip, x, y);
Vector3 delta = vector3_subtracted(current, m_start); Vector3 delta = vector3_subtracted(current, m_start);
@ -401,7 +401,7 @@ public:
start[1] == 0 ? 1 : 1 + delta[1] / start[1], start[1] == 0 ? 1 : 1 + delta[1] / start[1],
start[2] == 0 ? 1 : 1 + delta[2] / start[2] start[2] == 0 ? 1 : 1 + delta[2] / start[2]
); );
m_scalable.scale(scale); m_scalable.scale(scale);*/
} }
void SetAxis(const Vector3 &axis) void SetAxis(const Vector3 &axis)
@ -427,7 +427,7 @@ public:
void Transform(const Matrix4 &manip2object, const Matrix4 &device2manip, const float x, const float y) 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); point_on_plane(current, device2manip, x, y);
Vector3 delta = vector3_subtracted(current, m_start); Vector3 delta = vector3_subtracted(current, m_start);
@ -440,7 +440,7 @@ public:
start[1] == 0 ? 1 : 1 + delta[1] / start[1], start[1] == 0 ? 1 : 1 + delta[1] / start[1],
start[2] == 0 ? 1 : 1 + delta[2] / start[2] 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_free(scalable),
m_axis(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_y.m_line, 1);
draw_arrowline(length, m_arrow_z.m_line, 2); 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() Pivot2World &getPivot()
@ -2899,6 +2899,9 @@ public:
case eDrag: case eDrag:
m_manipulator = &m_drag_manipulator; m_manipulator = &m_drag_manipulator;
break; break;
case eCreate:
m_manipulator = &m_drag_manipulator;
break;
case eClip: case eClip:
m_manipulator = &m_clip_manipulator; m_manipulator = &m_clip_manipulator;
break; break;
@ -3017,14 +3020,14 @@ public:
bool SelectManipulator(const View &view, const float device_point[2], const float device_epsilon[2]) 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 ) #if defined ( DEBUG_SELECTION )
g_render_clipped.destroy(); g_render_clipped.destroy();
#endif #endif
m_manipulator->setSelected(false); m_manipulator->setSelected(false);
if (!nothingSelected() || (ManipulatorMode() == eDrag && Mode() == eComponent)) { if (!nothingSelected() || ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate) && Mode() == eComponent)) {
View scissored(view); View scissored(view);
ConstructSelectionTest(scissored, SelectionBoxForPoint(device_point, device_epsilon)); ConstructSelectionTest(scissored, SelectionBoxForPoint(device_point, device_epsilon));
m_manipulator->testSelect(scissored, GetPivot2World()); 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], void SelectPoint(const View &view, const float device_point[2], const float device_epsilon[2],
RadiantSelectionSystem::EModifier modifier, bool face) 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"); ASSERT_MESSAGE(fabs(device_point[0]) <= 1.0f && fabs(device_point[1]) <= 1.0f, "point-selection error");
if (modifier == eReplace) { if (modifier == eReplace) {
if (face) { if (face) {
@ -3142,6 +3149,10 @@ public:
void SelectArea(const View &view, const float device_point[2], const float device_delta[2], void SelectArea(const View &view, const float device_point[2], const float device_delta[2],
RadiantSelectionSystem::EModifier modifier, bool face) RadiantSelectionSystem::EModifier modifier, bool face)
{ {
if (m_manipulator_mode != eScale) {
return;
}
if (modifier == eReplace) { if (modifier == eReplace) {
if (face) { if (face) {
setSelectedAllComponents(false); setSelectedAllComponents(false);
@ -3284,7 +3295,7 @@ public:
/// \todo Support view-dependent nudge. /// \todo Support view-dependent nudge.
void NudgeManipulator(const Vector3 &nudge, const Vector3 &view) void NudgeManipulator(const Vector3 &nudge, const Vector3 &view)
{ {
if (ManipulatorMode() == eTranslate || ManipulatorMode() == eDrag) { if (ManipulatorMode() == eTranslate || (ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) {
translateSelected(nudge); translateSelected(nudge);
} }
} }
@ -3518,7 +3529,7 @@ void RadiantSelectionSystem::endMove()
freezeTransforms(); freezeTransforms();
if (Mode() == ePrimitive) { if (Mode() == ePrimitive) {
if (ManipulatorMode() == eDrag) { if ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) {
Scene_SelectAll_Component(false, SelectionSystem::eFace); Scene_SelectAll_Component(false, SelectionSystem::eFace);
} }
} }
@ -3538,15 +3549,14 @@ void RadiantSelectionSystem::endMove()
command << "rotateTool"; command << "rotateTool";
outputRotation(command); outputRotation(command);
} else if (ManipulatorMode() == eScale) { } else if (ManipulatorMode() == eScale) {
command << "scaleTool"; //command << "scaleTool";
outputScale(command); //outputScale(command);
} else if (ManipulatorMode() == eDrag) { } else if ((ManipulatorMode() == eDrag || ManipulatorMode() == eCreate)) {
command << "dragTool"; command << "dragTool";
} }
GlobalUndoSystem().finish(command.c_str()); GlobalUndoSystem().finish(command.c_str());
} }
} }
inline AABB Instance_getPivotBounds(scene::Instance &instance) 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()); matrix4_assign_rotation_for_pivot(m_pivot2world, m_selection.back());
} }
break; 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: default:
break; break;
} }
@ -3785,9 +3788,9 @@ Single<MouseEventCallback> g_mouseUpCallback;
const ButtonIdentifier c_button_select = c_buttonLeft; const ButtonIdentifier c_button_select = c_buttonLeft;
const ButtonIdentifier c_button_texture = c_buttonMiddle; const ButtonIdentifier c_button_texture = c_buttonMiddle;
const ModifierFlags c_modifier_manipulator = c_modifierNone; const ModifierFlags c_modifier_manipulator = c_modifierNone;
const ModifierFlags c_modifier_toggle = c_modifierShift; const ModifierFlags c_modifier_toggle = c_modifierNone;
const ModifierFlags c_modifier_toggle_face = c_modifierShift | c_modifierControl; const ModifierFlags c_modifier_toggle_face = c_modifierShift;
const ModifierFlags c_modifier_face = c_modifierControl; const ModifierFlags c_modifier_face = c_modifierShift;
const ModifierFlags c_modifier_replace = c_modifierShift | c_modifierAlt; 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_replace_face = c_modifier_replace | c_modifier_face;
const ModifierFlags c_modifier_apply_texture1 = c_modifierControl | c_modifierShift; const ModifierFlags c_modifier_apply_texture1 = c_modifierControl | c_modifierShift;
@ -3839,8 +3842,12 @@ public:
void testSelect(DeviceVector position) void testSelect(DeviceVector position)
{ {
if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) {
return;
}
RadiantSelectionSystem::EModifier modifier = modifier_for_state(m_state); RadiantSelectionSystem::EModifier modifier = modifier_for_state(m_state);
if (modifier != RadiantSelectionSystem::eManipulator) {
DeviceVector delta(position - m_start); DeviceVector delta(position - m_start);
if (fabs(delta.x()) > m_epsilon.x() && fabs(delta.y()) > m_epsilon.y()) { if (fabs(delta.x()) > m_epsilon.x() && fabs(delta.y()) > m_epsilon.y()) {
DeviceVector delta(position - m_start); DeviceVector delta(position - m_start);
@ -3853,7 +3860,6 @@ public:
getSelectionSystem().SelectPoint(*m_view, &position[0], &m_epsilon[0], modifier, getSelectionSystem().SelectPoint(*m_view, &position[0], &m_epsilon[0], modifier,
(m_state & c_modifier_face) != c_modifierNone); (m_state & c_modifier_face) != c_modifierNone);
} }
}
m_start = m_current = DeviceVector(0.0f, 0.0f); m_start = m_current = DeviceVector(0.0f, 0.0f);
draw_area(); draw_area();
@ -3861,7 +3867,10 @@ public:
bool selecting() const bool selecting() const
{ {
return m_state != c_modifier_manipulator; if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) {
return 0;
}
return 1;
} }
void setState(ModifierFlags state) void setState(ModifierFlags state)
@ -3997,6 +4006,10 @@ public:
g_mouseMovedCallback.insert(MouseEventCallback(Manipulator_::MouseMovedCaller(m_manipulator))); g_mouseMovedCallback.insert(MouseEventCallback(Manipulator_::MouseMovedCaller(m_manipulator)));
g_mouseUpCallback.insert(MouseEventCallback(Manipulator_::MouseUpCaller(m_manipulator))); g_mouseUpCallback.insert(MouseEventCallback(Manipulator_::MouseUpCaller(m_manipulator)));
} else { } else {
/* TODO: Only when eScale is selected */
if (getSelectionSystem().ManipulatorMode() != SelectionSystem::eScale) {
return;
}
m_selector.mouseDown(devicePosition); m_selector.mouseDown(devicePosition);
g_mouseMovedCallback.insert(MouseEventCallback(Selector_::MouseMovedCaller(m_selector))); g_mouseMovedCallback.insert(MouseEventCallback(Selector_::MouseMovedCaller(m_selector)));
g_mouseUpCallback.insert(MouseEventCallback(Selector_::MouseUpCaller(m_selector))); g_mouseUpCallback.insert(MouseEventCallback(Selector_::MouseUpCaller(m_selector)));

View File

@ -634,6 +634,7 @@ ui::Window SurfaceInspector::BuildDialog()
global_accel_connect_window(window); global_accel_connect_window(window);
window_connect_focus_in_clear_focus_widget(window); window_connect_focus_in_clear_focus_widget(window);
gtk_window_set_resizable(window, FALSE);
{ {

View File

@ -324,6 +324,16 @@ bool ClipMode()
return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip; return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip;
} }
bool IsCreateMode()
{
return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eCreate;
}
bool IsCreateEMode()
{
return GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eEntSpawn;
}
void NewClipPoint(const Vector3 &point) void NewClipPoint(const Vector3 &point)
{ {
if (g_Clip1.Set() == false) { if (g_Clip1.Set() == false) {
@ -1235,16 +1245,9 @@ public:
void XYWnd::OnContextMenu() void XYWnd::OnContextMenu()
{ {
if (g_xywindow_globals.m_bRightClick == false) { if (g_xywindow_globals.m_bRightClick == false)
return; return;
}
/* first time, init */
if (!m_mnuDrop) {
auto menu1 = m_mnuDrop = ui::Menu(ui::New);
EntityClassMenuInserter inserter(menu1);
GlobalEntityClassManager().forEachPoint(inserter);
}
if (!m_mnuDropSingle) { if (!m_mnuDropSingle) {
auto menu2 = m_mnuDropSingle = ui::Menu(ui::New); auto menu2 = m_mnuDropSingle = ui::Menu(ui::New);
create_menu_item_with_mnemonic(menu2, "Make detail", "MakeDetail"); 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"); create_menu_item_with_mnemonic(menu3, "_Normalize Color...", "NormalizeColor");
} }
if (GlobalSelectionSystem().countSelected() == 0) { if (GlobalSelectionSystem().countSelected() == 1) {
gtk_menu_popup(m_mnuDrop, 0, 0, 0, 0, 1, GDK_CURRENT_TIME);
} else if (GlobalSelectionSystem().countSelected() == 1) {
gtk_menu_popup(m_mnuDropSingle, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); gtk_menu_popup(m_mnuDropSingle, 0, 0, 0, 0, 1, GDK_CURRENT_TIME);
} else { } else {
gtk_menu_popup(m_mnuDropMultiple, 0, 0, 0, 0, 1, GDK_CURRENT_TIME); 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; FreezePointer g_xywnd_freezePointer;
unsigned int Move_buttons() unsigned int Move_buttons()
@ -1294,6 +1311,8 @@ unsigned int Move_buttons()
void XYWnd_moveDelta(int x, int y, unsigned int state, void *data) void XYWnd_moveDelta(int x, int y, unsigned int state, void *data)
{ {
reinterpret_cast<XYWnd *>( data )->EntityCreate_MouseMove(x, y); reinterpret_cast<XYWnd *>( data )->EntityCreate_MouseMove(x, y);
reinterpret_cast<XYWnd *>( data )->PointCreate_MouseMove(x, y);
reinterpret_cast<XYWnd *>( data )->BrushCreate_MouseMove(x, y);
reinterpret_cast<XYWnd *>( data )->Scroll(-x, y); reinterpret_cast<XYWnd *>( data )->Scroll(-x, y);
} }
@ -1405,21 +1424,24 @@ void XYWnd::mouseDown(const WindowVector &position, ButtonIdentifier button, Mod
} }
void CamWnd_DisableMovement(); void CamWnd_DisableMovement();
void XYWnd::XY_MouseDown(int x, int y, unsigned int buttons) void XYWnd::XY_MouseDown(int x, int y, unsigned int buttons)
{ {
if (buttons == Move_buttons()) { #if 0
Move_Begin(); if (IsCreateEMode()) {
EntityCreate_MouseDown(x, y); PointCreate_MouseDown(x, y);
} else if (buttons == Zoom_buttons()) { } else if (buttons == Zoom_buttons()) {
Zoom_Begin(); Zoom_Begin();
} else if (ClipMode() && buttons == Clipper_buttons()) { } else if (ClipMode() && buttons == Clipper_buttons()) {
Clipper_OnLButtonDown(x, y); 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); 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 // control mbutton = move camera
else if (buttons == MoveCamera_buttons()) {
XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd()); XYWnd_PositionCamera(this, x, y, *g_pParentWnd->GetCamWnd());
} }
// mbutton = angle camera // 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), m_window_observer->onMouseDown(WindowVector_forInteger(x, y), button_for_flags(buttons),
modifiers_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(); CamWnd_DisableMovement();
} }
void Patch_Plane();
void XYWnd::XY_MouseUp(int x, int y, unsigned int buttons) 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(); Move_End();
EntityCreate_MouseUp(x, y); EntityCreate_MouseUp(x, y);
} else if (m_zoom_started) { } else if (m_zoom_started) {
Zoom_End(); Zoom_End();
} else if (ClipMode() && buttons == Clipper_buttons()) { } else if (ClipMode() && buttons == Clipper_buttons()) {
Clipper_OnLButtonUp(x, y); Clipper_OnLButtonUp(x, y);
} else if (m_bNewBrushDrag) { }else if (m_bNewBrushDrag) {
m_bNewBrushDrag = false; m_bNewBrushDrag = false;
NewBrushDrag_End(x, y); NewBrushDrag_End(x, y);
} else { }else {
m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons), m_window_observer->onMouseUp(WindowVector_forInteger(x, y), button_for_flags(buttons),
modifiers_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) 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) inline float screen_normalised(int pos, unsigned int size)
{ {
return ((2.0f * pos) / size) - 1.0f; return ((2.0f * pos) / size) - 1.0f;

View File

@ -231,6 +231,8 @@ private:
void OriginalButtonDown(guint32 nFlags, int point, int pointy); void OriginalButtonDown(guint32 nFlags, int point, int pointy);
void OnContextMenu(); void OnContextMenu();
void OnBrushMenu();
void OnPointMenu();
void PaintSizeInfo(int nDim1, int nDim2, Vector3 &vMinBounds, Vector3 &vMaxBounds); void PaintSizeInfo(int nDim1, int nDim2, Vector3 &vMinBounds, Vector3 &vMaxBounds);
@ -254,11 +256,17 @@ public:
} }
void EntityCreate_MouseDown(int x, int y); void EntityCreate_MouseDown(int x, int y);
void EntityCreate_MouseMove(int x, int y); void EntityCreate_MouseMove(int x, int y);
void EntityCreate_MouseUp(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); void OnEntityCreate(const char *item);
VIEWTYPE GetViewType() VIEWTYPE GetViewType()

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -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 ",
" ",
" ",
" ",
" ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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 ",
" + + + ",
" ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -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+ ",
" ",
" ",
" ",
" ",
" ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -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. ",
" ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -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 ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -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 ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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 ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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 ",
" ",
" "
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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 ",
" ",
" "
};

View File

@ -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 ",
" ",
" "
};

Binary file not shown.

View File

@ -1273,6 +1273,7 @@ int LightContributionToSample( trace_t *trace ){
to the surface normal the bigger is the amount of radiosity received. to the surface normal the bigger is the amount of radiosity received.
So, for preserving the directional lights contributions, we scale down the radiosity So, for preserving the directional lights contributions, we scale down the radiosity
contribution. It's a hack, but there's a reason behind it */ contribution. It's a hack, but there's a reason behind it */
#if 1
if ( bouncing ) { if ( bouncing ) {
addDeluxe *= addDeluxeBounceScale; addDeluxe *= addDeluxeBounceScale;
/* better NOT increase it beyond the original value /* better NOT increase it beyond the original value
@ -1280,7 +1281,8 @@ int LightContributionToSample( trace_t *trace ){
addDeluxe = 0.00390625f; addDeluxe = 0.00390625f;
*/ */
} }
#endif
if ( doAddDeluxe ) { if ( doAddDeluxe ) {
VectorScale( trace->direction, addDeluxe, trace->directionContribution ); VectorScale( trace->direction, addDeluxe, trace->directionContribution );
} }
@ -3013,6 +3015,8 @@ int LightMain( int argc, char **argv ){
} }
} }
} }
lightAngleHL = qfalse;
/* fix up lightmap search power */ /* fix up lightmap search power */
if ( lightmapMergeSize ) { if ( lightmapMergeSize ) {