Commit Graph

70 Commits

Author SHA1 Message Date
Garux ef2fdfa127 make bestPlaneDirect, bestPlaneIndirect const 2020-05-05 19:49:01 +03:00
Garux 7acdf92d50 * QE tool mouse move: highlight PlaneSelectables with alt/ctrl+alt, components in component modes
improve bestPlaneIndirect pickup (resolve, when corner is closest)
support 2d in class DragPlanes::bestPlaneIndirect
2020-03-19 00:00:28 +03:00
Garux e7b8e36db6 * DragExtrudeFaces: process with selected faces only, i.e. w/o objects selection 2020-03-09 05:53:14 +03:00
Thomas Debesse 1acf0bb221 * alt + m1 2D view face vertex manipulator: use 'faces on the only best plane' pickup strategy 2020-03-03 01:57:56 +03:00
Thomas Debesse 07a06b5b89 * ctrl + alt + m1: extrude pointed faces of selected brushes and selected faces inside/outside
* improve alt + m1 resizing camera for slanted faces
2020-02-22 04:14:45 +03:00
Garux aa99f4d254 * UV Tool (edit texture alignment of selected face) modifiers:
pivot control point and lines: ctrl = snap hard to face vertices and grid
		grid density controls: shift = change density of both axes synchronously, ctrl = power of two grid
		scale lines: shift = scale axes synchronously, ctrl = snap hard to vertices
		alt + m1 on grid = skew texture (is possible alright in BP and Valve220 map formats, not in AP); ctrl = snap hard to edges
		texture move: shift = only move along the axis with the biggest move, ctrl = snap grid lines hard to vertices and pivot
		rotate: shift = rotate with step of 15 degrees, ctrl = snap hard to edges
2019-05-19 10:30:44 +03:00
Garux 3ce07bb310 change points order in plane3_for_points( const BasicVector3<Element>& p0, const BasicVector3<Element>& p1, const BasicVector3<Element>& p2 )
to be consistent over the related code
to omit points swap there and there
2019-05-01 12:38:58 +03:00
Garux 71c63fbdc6 * fix alt + m1 indirect faces picking, when object is partially or fully out of camera view
refactor math functions
2019-04-28 20:54:29 +03:00
Garux f45f759b43 * bigger components handles
* render occluded brush vertices differently
disable NV_DRIVER_BUG workaround
remove RenderableWireframe::glColorPointer call
2019-04-16 00:07:50 +03:00
Garux bfc66aa6af * prevent resizing brushes to zero volume by faces drag, try to stop at minimal configuration 2019-04-04 17:34:08 +03:00
Garux 2ef794539c * fix sloped brushes evaluation at big coordinates (aka disappearing faces and brushes)
add windingTestInfinity() to bruteforce test maxWorldCoord's multiplier, lending reliable winding infinity
experimental Winding_createInfinite() percision improvements, borrowed from q3map2's BaseWindingForPlaneAccu()
2019-04-02 00:17:26 +03:00
Garux eb95c73416 Winding_Draw fix use after scope 2019-02-22 23:44:51 +03:00
Garux 90d272e0a8 fix commit 9186d18353 , handle 'no vertices selected' case properly 2018-12-25 22:50:18 +03:00
Garux 4dc9b18f70 * fix brush shader names handling by bobtoolz (was writting empty shader name = crash on map save, at least "textures/" is expected)
complain about patch and brush shader names harder
2018-12-24 23:44:57 +03:00
Garux 9186d18353 optimize vertices reselection during vertex manipulations 2018-12-24 00:08:55 +03:00
Garux 2f867c99d9 * fix crashy assertions on vertices/edges selection (also = during vertex manipulations)
by removing not needed anymore update_move_planepts_vertex code
	* disable points snapping to .125 grid during edge manipulation (already disabled for vertex mode)
2018-12-23 23:44:13 +03:00
Garux bcbbde0b35 remove debug prints 2018-12-13 19:31:23 +03:00
Garux 9eff327c70 refactor brush transform evaluation code to reduce amount of unneeded evaluations to 0
improvable: don't evaluateBRep on shader changed, perhaps more
fix: brush vertex manip: no vertexModeFree() after identity transform (mouse forth and back / rotate dialog 0 / insertion w/o move) = selects vertices on undo
fix: brush vertex manip: tex vertex lock: broken for 220
use brush::vertexmode code to delete selected brush components
2018-12-13 19:13:26 +03:00
Garux 868ff8fe50 * insert brush vertices in vertex mode by clicking with no ones selected 2018-12-11 13:19:07 +03:00
Garux 51c798fd9c * Snap to grid in a component mode: snap whole objects, if no components selected
* Snap brush/its vertices to grid: rebuild brush from snapped vertices with optional texture vertex lock
2018-12-10 21:00:33 +03:00
Garux 3f3230ed2a remove debug prints 2018-12-10 17:51:41 +03:00
Garux 435c41b73b * new vertex editing mode, preserving non modified vertices (=adding/removing faces automatically)
with debug prints
2018-12-10 17:50:40 +03:00
Garux 389030e05d fix cached brush face centroid tracking 2018-12-05 15:19:12 +03:00
Garux 0f7af6aaa4 binds... * shift + u: new uniform CSG wrap merge algorithm, merging selected brushes and/or components 2018-10-16 01:20:09 +03:00
Garux 9c91f4fa78 binds... * alt + m1 in camera: new resizing mode for brushes, curves and doom3 lights with direct and indirect selection methods 2018-10-06 02:31:05 +03:00
Garux 6f8a0668a3 add and use VolumeTest/View.getViewDir() 2018-05-18 01:55:20 +03:00
Garux 4542d9da3c * Valve220: transform basis in special way with texture lock off 2018-05-16 16:40:54 +03:00
Garux ae1bd2c066 matrix4_for_normal_transform, matrix4_transformed_normal, plane3_transformed_affine_full functions 2018-05-16 14:16:43 +03:00
Garux 3ae4188e3d simplify planeselectables if( camera ) check 2018-04-13 00:14:32 +03:00
Garux 48d75b777d * brush creation in camera; alt = modify height 2018-04-06 12:26:06 +03:00
Garux 8fbc462525 * select only plane of planeselectables in camera (since it's not easy to select multiple ones on purpose anyway) 2018-03-29 00:53:43 +03:00
Garux 73605bf94b robust algorithm for indirect Brush faces selection 2018-03-27 01:15:16 +03:00
Garux b1e2f26124 use globalWarningStream() 2018-03-21 04:21:07 +03:00
Garux eae7ac024a clean namedentity, forward declarations, ostream_write 2018-02-22 18:56:53 +03:00
Garux c878333c7b * m2 in Surface Inspector->fit width/height = fit width/height, keep height/width 2018-02-19 17:28:05 +03:00
Garux 9f1690ed64 * fix unwanted brush face texture transformations on brush resizing with texture lock on 2017-12-11 16:53:01 +03:00
Garux 723a615110 * texture locking during vertex and edge manipulations 2017-12-06 13:57:40 +03:00
Garux 1658f27ee6 * Valve220: keep basis on 'paintTexture&Projection' (shift+m3); 'projectTexture' (ctrl+shift+m3) performs basis copy 2017-11-10 14:56:35 +03:00
Garux 3d3592c1f0 * preferences->Camera->Colorize selection option (filling highlighting), def=on
* fix: selected faces wire color is updated immediately on colour theme change
2017-10-27 10:47:15 +03:00
Garux 62a5122ff8 rename TEXDEFTYPEID_HALFLIFE -> TEXDEFTYPEID_VALVE for consistency 2017-10-18 23:35:56 +03:00
Garux f4149f1549 * Valve220: use face projection by default
* Valve220: Project {axial, ortho, cam, from face} functions
	* conversions between AP, BP and Valve220 brush types; conversions to Brush Primitives and Valve220 formats are lossless
	* detect brush format and automatically convert to current one on map Import and Paste
	* Valve220: fixed Reset function, implemented Rotate one
	* Valve220: fix overwriting basis on brush clone/map import ( in Face( Face ) constructor )
	* BP: fix: normalize shift values during import, arbitrary projections and face->fit
	* Valve220: fix texture lock for scaling, fix for negative texdef.scale
2017-10-02 18:11:43 +03:00
Garux 0b3f42ffbc * "BrushAlwaysCaulk" option is saveable for brush types other than q3
* brush format is preference for [maptypes, brushtypes]: [mapq1, quake], [mapq2, quake2], [mapq3, quake3]:
		preferences->Brush->Brush type: Axial projection, Brush primitives, Valve 220
	* autodetect brush type on map opening
	* brush face surfaceflags are optional on loading for flexibility
	* 'Snap planes to integer grid' option is always off by default
2017-09-16 16:37:39 +03:00
Garux 56997e1c66 * brush resize, face shear: select single face with angle, closest to view direction (or multiple ones with equal angles) 2017-08-12 18:40:50 +03:00
Garux 3f1c97ebeb Radiant:
misc...
	* selection system: fixes of: selecting point behind point (not perfectly precise distance)
					selecting occluded objects and faces via direct and indirect hits
	* select models from back in 2d
2017-08-02 09:53:56 +03:00
Garux 2e3529798d Radiant:
misc...
	* prefs->cam->Selected faces wireframe option (def = yes)
	* Textured+Wireframe camera render mode
2017-08-02 09:51:41 +03:00
Garux c3d11bca70 Radiant:
misc...
	* experimental fix of rendering scene and evaluating brush/patch representation TWICE on every transform (literally after every mouse move fraction)
2017-08-02 09:48:29 +03:00
Garux 6fa612373e Radiant:
misc...
	* new texture lock algorithm for BP map format, supporting any affine transformations
	* more robust texture lock algorithm for AP map format, locking what is possible to; also improves seamless face2face tex paste function
2017-08-02 09:48:12 +03:00
Garux fb7c979d42 Radiant:
misc...
	* place created simple patch mesh not in middle of bbox, but on edge to make result more usable
	* prefs-interface-layout-single scrollable toolbar
2017-08-02 09:47:35 +03:00
Garux da43652df1 Radiant:
binds...
	* ctrl + shift + m3/drag: project tex from face in tex clipboard to brushes(BP format) and curves

misc...
	* fixed and improved normal finding in patch texture autocap algorithm
	* removed axis cycling in patch cap texture; using autocap
	* patch cap texture: project, using brush texture projection math of current mapformat to make it seamless with brushes by default
	* Surface inspector->Project functions work for curves (in AP map format too)
2017-08-02 09:47:05 +03:00
Garux b0c4caa9d1 Radiant:
binds...
	* m3: apply texture name and alignment to selected primitives and faces
	cleaning
2017-08-02 09:46:24 +03:00