Commit Graph

769 Commits

Author SHA1 Message Date
Alexandru Popovici 43d92234a3 fix(viewer-lib): Fixes WEB-4326 Taking a screenshot no longer enables section tool (#5537) 2025-09-24 09:25:43 +02:00
andrewwallacespeckle c71e20eb8b fix(viewer): raise MIN_CLICK_TIMING to improve single clicks
fix(viewer): raise MIN_CLICK_TIMING to improve single clicks
2025-09-23 15:58:40 +02:00
andrewwallacespeckle a7a20adb16 fix(viewer): raise MIN_CLICK_TIMING to improve single clicks 2025-09-23 12:07:51 +02:00
AlexandruPopovici ef8c3a9596 fix(viewer-lib): Fixed WEB-4323 2025-09-23 11:32:31 +02:00
Alexandru Popovici f1267ee9fa fix(viewer-lib): Added support for non directly displayable objects as instances (#5465) 2025-09-22 11:54:31 +03:00
Alexandru Popovici ce34e1d379 fix(viewer-lib): Simple way of making sure dynamic camera events are always sent by the camera controller (#5404) 2025-09-15 13:21:12 +03:00
Alexandru Popovici e80e0de74c Programmatic Measurements (#5346)
* feat(viewer-lib): Added MeasurementData and stuck with shared library defined measurement related types

* feat(viewer-lib): Some updates:
- Removed unnecessary calculations in point to point measurement. More lean now. Implemented serialization/deserialization
- Tempoarary serialization/deserializaton for the rest of the measurement types
- MeasurementsExtension now is able to load measurements from MeasurementData objects
- Updated viewer's export list to not export mesurements related types that are now exclusively exported by the shared library

* feat(viewer): Perpendicular measurements simplification (a little bit) and serialization/deserialization

* chore(frontend): Updated measurement types imports

* chore(viewer-lib): Removed the old normal indicator line from the perpendicular measurement

* feat(viewer-lib): Updates:
- Generic fromMeasurementData and toMeasurementData for all measurements since it's unniversal
- Each measurement type serializes/deserializes only specialized data
- Implemented ponint measurement serializing/deserializing and programmatic functionining

* feat(viewer-lib): Area mesurement serialization/deserialization

* feat(viewer-lib): Updates:
- Each measurement subtype now reports the MeasurementType it belongs to
- MeasurementsExtension now emits a MeasurementsChanged event with all the measurements as payload whenever the measurements change
- units and precision are no longer serialized/deserialized on a per-measurement basis
- Added sync API member addMeasurement

* chore(viewer-lib): Fix compiler error

* chore(viewer-lib): Added measurements getter in MeasurementExtension

* feat(fe2): save/reload measurements integration (#5351)

* measurements idempotent api

* extra adjustments, stuff seems to work

* lint fix

* more lint fix

* fix for visible going false

* better identification

* fix FlyControls change action

---------

Co-authored-by: Kristaps Fabians Geikins <fabians@speckle.systems>
2025-09-02 09:46:30 +03:00
Alexandru Popovici c6f4a2e946 fix(viewer-lib): Circle point generation now allocates more efficiently (#5290)
* fix(viewer-lib): Circle point generation now allocates more efficiently

* chore(viewer-lib): Fixed compile error
2025-08-27 16:27:16 +03:00
Alexandru Popovici 1daf8df99e feat(viewer-lib): Added means to filter clicked objects (#5240)
* feat(viewer-lib): Added means to filter objects recieveing in ObjectClicked and ObjectDoubleClicked events. The filter has a default implementation where it ignores objects with invisible materials, ghost materials or materials with 0 opacity

* chore(viewer-lib): Added support for null pick filter. Added some commnets

* chore(viewer-lib): Fixed typo and linting issue

* chore(viewer-lib): Another typo
2025-08-14 14:14:29 +03:00
andrewwallacespeckle 24cf8e9e63 fix(viewer): don't trigger movement if any modifier keys are pressed 2025-08-13 16:38:13 +01:00
andrewwallacespeckle 002a8d93f0 Merge branch 'main' into feature/initial-viewer-ui-updates 2025-08-08 17:15:34 +01:00
Alexandru Popovici 9b18a2364c fix(viewer-lib): Two things: (#5201)
- Fixed an age old issue where transparent mesh batch ranges were incorrectly reported
- Diff materials now have their visible flag reset to false when opacity is 0 and set when otherwise, so that they are not picked up by the edges pipeine in the transparent edges generation pass
2025-08-08 16:56:53 +03:00
Alexandru Popovici 3fde213df5 chore(viewer-lib): Empty chunks will no longer trigger error logs. overwriting material proxie will trigger warning not error logs (#5198) 2025-08-08 16:56:06 +03:00
andrewwallacespeckle 785a192a4b Merge branch 'main' into feature/initial-viewer-ui-updates 2025-08-08 14:42:03 +01:00
Alexandru Popovici cd9fc24148 fix(viewer-lib): Circles now have a fixed sample point count for simplicity. In relative terms, when viewing the circle at normal zoom levels you will get good visual fidelity. (#5199) 2025-08-08 16:16:21 +03:00
andrewwallacespeckle f549171602 Merge branch 'main' into feature/initial-viewer-ui-updates 2025-08-07 10:25:23 +01:00
Alexandru Popovici b856c554d6 fix(vieer-lib): Measurements should not work better on touchscrens (#5187) 2025-08-07 10:51:15 +03:00
andrewwallacespeckle c26e0a3958 Changes from Alex 2025-08-06 13:45:49 +01:00
andrewwallacespeckle 11c00510b4 Show dot when active measurements 2025-08-06 12:09:38 +01:00
Alexandru Popovici 0e9899ea3b No outlines for Ghosted objects (#5182)
* feat(viewer-lib): Implemented custom object visibility on a per pass basis. With this, we can have ghosted objects not render lines even if they are still transparent

* chore(viewer-lib): Fixd compiler error

---------

Co-authored-by: Mucahit Bilal GOKER <51519350+bimgeek@users.noreply.github.com>
2025-08-06 12:43:51 +03:00
Alexandru Popovici d6d6a4a4ec fix(viewer-lib): Shaded Mode no longer shows outlines of hidden objects (#5177) 2025-08-01 21:35:18 +03:00
Alexandru Popovici f9e5af19f3 chore(viewer-lib): Text now uses it;s color proxy before any other material sources (#5176) 2025-08-01 17:49:07 +03:00
Alexandru Popovici a6c26c387a fix(viewer-lib): The invisible 'E' axis is no longer selectable or existing (#5175) 2025-08-01 16:51:39 +03:00
Alexandru Popovici 52dc47a6c2 fix(viewer): Instances that have negataive scaling transforms noow flip their normals either in the shader when instanced rendering, either when building the mesh batch if demoted from instanced rendering by the batcher (#5173) 2025-08-01 11:19:27 +03:00
Alexandru Popovici aa17a48533 Better Support for Large Models (#5144)
* fix(viewer-lib): Transformed is no longer baked in if matrix is identity

* fix(viewer-lib): Do not use uint32 indices unless we have to

* fix(viewer-lib): Do not use Float64 array unless the batch needs RTE

* feat(viewer-lib): Update on reducing memory allocation during startup:
- Geometry data is now stored as separate DataChunks as they come
- Dechunking now no longer allocates memory. It just returns the DataChunk array
- Updated the SpeckleGeometryConverter to work with chunk arrays
- Updated Geometry and triangulation to work with chunk arrays
- All geometry type batches now work with chunk arrays instead of flattened arrays
- Chunks are tracked by use and deleted after all render views are done with them. The chunks also track their usage across different render views so they aren't deleted until all render views that use tham are finished with them
- In order to better support this new way of working with geometry data, VirtualArray and ChunkArray classes have been implemented. They make it easier to work with segmented data and offer a unified view on the array of array segments

* chore(viewer-lib): Denormalized normals to keep parity, even though they should be normalized

* feat(viewer-lib): Geometry transformation is now deferred until we build batches, and we transform the batched arrays leaving the original data chunks intact. Text and TextBatchObject now use the render view's 'transform' property to store it's final startup transformation and not 'bakeTransform' anymore

* fix(viewer-lib): Fixed the issues caused by chunking geometry to the acceleration structures.

* chore(viewer-lib): Made a pass on the entire viewer project and removed pointless typed array backing buffer re-allocations

* feat(viewer-lib): Updates on better large model support:
- Fixed an issue in LineBatach that broke building it
- Improved VirtualArray performance and added some extra functionality
- Already triangulated faces no longer allocate redundant memory, they get processed in place
- Moved triangulation to SpeckleConverter so that processed index chunks get stored in local storage so we don't have to re-triangulate each time

* feat(viewer-lib): Gave up on trying to cache triangulated indice. Too much hasle and edge cases to handle when only some chunks get saved as triangulated in a multi chunk setup

* fix(viewer-lib): Fixed non triangulted geometry converter return

* feat(viewer-lib): Glow-up to our triangulation implementation. Faster, zero allocation

* fix(viewer-lib): Frontfacing not backfacing triangles

* chore(viewer-lib): Fixed compile errors

* fix(viewer-lib): Already processed chunks just copy over

* fix(viewer-lib): Skip processed chunks when computing triangulation index size

* fix(viewer-lib): Some fixes:
- Fixed an issue where instances that will not be rendered as instanced geometry were not correctly transformed
- Removed geometry duplication from instances that were de-instanced in the batcher
- Fixed an issue with LineBatch and buffer type

* fix(viewer-lib): Implemented box3 bounds generation from ChunkArray which takes care to respect inter-chunk bounds for vec3. Without this, box3s were incorrectly calculated by computing a box3 for each chunk

* fix(viewer-lib): Fixed an issue where transformations that contain non-uniform scaling incorrectly produce node render views aabb values. So we recompute them based on the post-transform geometry when building batches

* fix(viewer-lib): When mixing triangles with ngons we also need to increment total tris count for the triangle case as well

* fix(viewer-lib): If geometry is invalid, clear it all

* fix(viewer-lib): Instanced rvs no longer transform their aabbs when building the render tree because they don't need to

* fix(viewer-lib): aabb for render views needs to be recomputed when de-instanced by the batcher
2025-07-31 12:10:10 +03:00
Benjamin Ottensten 4579ec7109 Feat: Support for undo/redo in section tool (#5161)
* Allow undoing rotations

* Allow redoing undos

* Improve how the very first rotation is stored

* Track the history of any section box edit

* Also update section outlines when undoing/redoing

* Increase how much history we store

* Start initial index at 0

* Rewrite some comments

* Use existing OBB class instead

* Get rid of fudge

* Only support undo/redo when section tool is visible

* Update naming
2025-07-30 11:56:25 +02:00
Benjamin Ottensten 3044c6b342 Snap section box rotation to nearest 15 degrees (#5157)
* Rotate by 15 degrees when shift key is pressed

* Move consts outside

* Make snap angle a configurable option

* Add comment about support for snapped rotation
2025-07-29 13:05:34 +02:00
Adam Hathcock 167bbed7be (fix) debug mode for viewer (#5142)
* Fix the debug usage for the viewer

* formatting
2025-07-25 10:50:38 +01:00
Adam Hathcock 877266bca7 OL2 (feat): useCache option and flag clean up (#5133)
* add addAll

* change to useCache query option which defaults to true

* add documentation

* called query params feature flags and fixed usage

* fixed debug logging

* eslint and prettier fixes

* eslint and prettier fixes

* revert

* Update packages/viewer-sandbox/src/Sandbox.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-23 15:13:24 +01:00
andrewwallacespeckle 8add7111ff Merge branch 'main' into mike/change-busy-events 2025-07-22 15:29:56 +01:00
Daniel Gak Anagrov a5671992f0 Revert "fix(ci): deduplicated lint runs (#5045)" (#5126)
* Revert "fix(ci): deduplicated lint runs (#5045)"

This reverts commit 19ffdace61.

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-07-22 13:34:42 +02:00
andrewwallacespeckle 0ea8a3d123 remove inProgressOperations 2025-07-22 10:24:43 +01:00
andrewwallacespeckle 2d2c3804a6 Merge branch 'main' into mike/change-busy-events 2025-07-21 19:42:41 +01:00
Adam Hathcock 477db6ef02 All BatchedQueues should drain when disposed (also adds query string for output: "debug=true") (#5098)
* ensure disposal is correct

* add tests for disposal of batching queue

* fixes for draining disposal

* Update packages/objectloader2/src/queues/batchingQueue.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix comment

* fix tests and build

* add query string inspection of debug parameter

* Update packages/objectloader2/src/queues/batchingQueue.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/objectloader2/src/core/objectLoader2Factory.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix test

* fix AI

* export getQueryParameter to avoid dup code.  Sandbox uses it too

* add tests for functions

* prettier fix

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 12:01:27 +01:00
Adam Hathcock 390e587709 Cache By Reference count (#5096)
* we don't want to break eviction checking for first item...continue the check

* always include size when adding

* scan for references and count them...request when found and don't clean up if referenced

* add display of closure calculation

* add always output to sandbox

* formatting fixes

* removed tracking of deferments, moved caching to separate concern and class

* fixed cache checking and simplifed deferment

* add tests for new deferment and cache

* formatting

* Update packages/objectloader2/src/deferment/BaseCache.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/objectloader2/src/deferment/BaseCache.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/objectloader2/src/core/objectLoader2.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/objectloader2/src/core/objectLoader2.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/objectloader2/src/core/objectLoader2.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix AI suggestions

* rename BaseCache to MemoryCache

* use private method

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 11:31:21 +01:00
Alexandru Popovici f3974dd9d0 Alex/text updates (#5012)
* feat(viewer-lib): Text updates:
- Update to latest troika-three-text version
- Started working on the new TextBatch whoich will actually batch texts
- Augmented BatchedText type from troika
- Renamed old SpeckleText to TextLabel

* feat)viewer-lib): Copied over the batched version for the speckle text into our text material since troika won't export it

* feat(viewer-lib): First draft on text batching

* feat(viewer-lib): WIP on TextBatch and SpeckleText

* feat(viewer-lib): SpeckleText batch now has working TAS and BAS. Overloaded getBatches to also take an array of geometry types and added GeometryType.TEXT in places where required alongisde MESH

* feat(viewer-lib): Text batch has correctly transformed texts

* feat(viewer-lib): Patched troika BatchedText to allow per text opacity. Draw ranges for text batches are now functional

* feat(viewer-lib): Fixed an issue with the BAS not correctly reporting bounds. Had to override two methods completely in our SpeckleText extension of the BatchedText just so that we don't do stupid things and still get good performance when dealing with a huge number of texts

* feat(viewer-lib): Added text batch object count limit. Default is 5k. Implemented proper material caching and cloning inside SpeckleText. Overriden the default updateBounds function so that we don't waste tens of millisecons per frame!!! pointlessly

* feat(viewer-lib): Implemented TextBatchObject along with individual text batch object transform manipulation at batch level.

* chore(viewer-lib): Updated the pipelines to not render text geometries twice

* feat(viewer-lib): Implemented RTE for batched text rendering. As with the rest of the geometry types, RTE is automaic and will only be used when needed

* feat(viewer-lib): Integrated remaining text v3 features: alignments and maxWidth

* feat(viwer-lib): Implemented billboarding and RTE billboarding for text.

* feat(viewer-lib): Text batches now report correct object materials and can be filtered properly

* fix(viewer-lib): Some Fixes:
- The need for text RTE is now correctly being computed on the right text dimensions
- Sequential update ranges now correctly apply materials to all of them

* fix(viewer-lib): RTE text box is now correctly transformed. The text batch object only uses the TAS for intersecting since it's BAS is redundant.

* feat(viewer-lib): Text batches now correctly use gradient/ramp textures along with sample indices for colored filtering.

* feat(viewer-lib): Implemented raycasting for billboarded text batches in the most simple and robust way I was capable of. Lacks TAS speedup but it's a compromise we have to make and one which we probably will never regret

* feat(viewer-lib): Good progress on reworking TextLabel, which replaces the old multi purpose SpeckleText, which we use internally for measurements. More precise rendering, no more rogue margins between text and background. Regular billboarding now also works, along with non-billboarded rendering

* feat(viewer-lib): Finally a unified billboarding solution in SpeckleBasicMaterial. Supporting both world and screen billboarding; SpeckleTextMaterial now extends SpeckleBasicMaterial; TextLabel now has proper control over size and margins. No more weird offsets. Added background margins to the text params which work in both world and screen space.

* feat(viewer-lib): Implemented raycasting for all billboarding types. Spent quite some time on the screen billboarding one because of a stupid mistake

* chore(viewer-lib): Added (vibed) type declaration file for troika's Text class and fixed compiler errors for TextLabel

* chore(viewer-lib): Renamed SpeckleText to SpeckleBatchedText and fixed all compiler errors. Updated type definition file

* feat(viewer-lib): Integrated TextLabel with measurements. Simplified a lot of code

* fix(viewer-lib): Some updates and fixes to text and measurements integration
- Screen space billboarding now also takes an NDC offset alongside the size.
- Added auto margin calculation for TextLabel background so it's always centered regardless of anchor-ing
- DPR is automatically factored in for TextLabel
- Some changes to sizes and margins for measurements

* fix(viewer-lib): Bunch of fixes and tweaks

* fix(viewer-lib): Area measurement's area plane no longer overdraws on top of the area value text label via simple stenciling

* fix(viewer-lib): Fixed CI build

* fix(viewer-lib): Fixed CI build

* feat(viewer-lib): Slightly reduces the size and h margin of text gizmos for measurements

* fix(viewer-lib): Fixed incorrect text transformation when neither RTE nor billboarded

* chore(viewer-lib): Added review suggestions
2025-07-15 14:48:13 +03:00
Alexandru Popovici 63015f3d9b fix(viewer-lib): Camera planes need to be recomputed after a camera jumping to goal in the non animated setCameraView (#4836) 2025-07-10 21:00:26 +03:00
andrewwallacespeckle c09142ac69 Merge branch 'main' into mike/change-busy-events 2025-07-09 11:41:58 +01:00
Alexandru Popovici 567ee30ed9 fix(viewer-lib): Section tool no longer moves when hidden or disabled (#5024) 2025-07-02 18:09:20 +03:00
Alexandru Popovici f5c680e33a fix(viewer-lib): Disabled shadowcatcher depth writing (#5023) 2025-07-02 17:06:11 +03:00
Alexandru Popovici 3c1a10bff1 Support for duplicate objects (#4959)
* feat(viewer-lib): Implemented support for duplicate speckle objects. The world tree now accepts duplicates by appending a unique identifier to the node ids. The speckle object ids remain the same. Searching for a duplicated node id will also yield all nodes

* feat(viewer-lib): Changed the way duplication handling works. It's more simple, cleaner and it works better. NodeMap now registers duplicates softly, and only renderable objects are actually duplicated

* fix(viewer-lib): Fixed typo
2025-06-20 09:46:04 +03:00
Adam Hathcock 312f8083ab Progress for Traversal and Rendering alongside Data loading (#4899)
* Fix deferment logging

* Add count and total for traversal and rendering

* Prettier

* ESlint fixes

* Don't have a total for traversal

* revert lock change

* chore(viewer-lib): Added a comment abou render trees and reported node counts

* Traversal has no total

* ignore conversion total

* remove total for converted

* forgot a build breakage

* make the count callback optional

---------

Co-authored-by: AlexandruPopovici <alexandrupopoviciioan@gmail.com>
2025-06-19 10:08:38 +01:00
Alexandru Popovici f9e1ca1079 fix(viewer-lib): Renamed OrientedSectionTool back to SectionTool since we not going to be doing multiple section tool types (#4876) 2025-06-03 10:38:56 +03:00
Alexandru Popovici 244042b785 Canonical Views Fix (#4867)
* fix(viewer-lib): Both deltaTarget and deltaPosition need to smaller than epsilon ot return early in 'fromPositionAndTarget'

* chore(viewer-lib): Deleted unused source
2025-06-02 12:07:12 +03:00
Adam Hathcock eec93469b3 trying to add a separate geometry conversion progress as well as data loading progress (#4710)
* Adding more progress to loading and rendering of a model

* have separate values for loading totals

* Allow callback to be null

* Fix loading test

* Prettier

* Revert sandbox changes
2025-05-30 15:14:32 +01:00
Alexandru Popovici ab9c787e9e fix(viewer-lib): Forgot to add RTE defined for measurement gizmo normal indicator (#4848) 2025-05-29 16:20:32 +03:00
Alexandru Popovici a43aaedcca On Demand Automatic RTE (#4808)
* chore(viewer-lib): testing numbers

* feat(viewer-lib): Implemented a way to compute the projected pixxel difference between fp32 and fp64 as it would happen on the GPU. With this we can determine which streams need RTE

* feata(viewer-lib): Proper precision loss detection

* feat(viewer-lib): Removed default 'USE_RTE' defines from all non instanced mesh materials. Updated standard shader to compile and work properly in non RTE mode

* fix(viewer-lib): non-RTE vertex transform also takes pivot into account

* feat(viewer-lib): All required vertex programs now have proper non-RT vertex and shadow transformation pipelines

* feat(viewer-lib): Mesh batch determines if it needs RTE on it's own

* feat(viewer-lib): Shadowmap now also renders properly with selective RTE

* feat(viewer-lib): Instanced batches no longer use RTE regardless of the RTE need source

* feat(viewer-lib): Lines now have no RTE by default and it's only enabled on demand by the batch when required

* feat(viewer-lib): Points and point clouds no longer use RTE by default. It's enabled on demand
2025-05-26 15:22:26 +03:00
Alexandru Popovici 0ef0a13979 Pro Measurement Tools (#4452)
* feat(viewer-lib): WIP on area measurement

* feat(viewer-lib): WIP on area measurement. Basics are working. Needs more bling

* feat(viewer-lib): Implemented polygon triangulation for measured area

* chore(shared): Updated MeasurementType

* Add Area control to measure panel

* feat(viewer-lib): Real time updates of the fill polygon and area value

* feat(viewer-lib): Added pole of innacessibility as area label anchor using the polylabel libraryh

* feat(viewer-lib): Fixed fill polygon material

* feat(viewer-lib): Changed the surface normal indicator from the faulty disc to a outlined rectangle. Looks and works much better now

* fix(viewer-lib): Measurements get clipped by sections planes

* faet(viewer-lib): Measurements can now optionally define their own snapping method. Area measurement snaps to first point in screen space. Generic vertex snap still applies if enabled

* fix(viewer-lib): Forgot to project the measured point

* feat(viewer-lib): Double click auto-finishes the area measurmenet by instantly joining with the first point. Right clikc removes current area measurement point so you can 'undo'

* fix(viewer-lib: Fixed a stupid bug relatedto text because somebody thought that making it 'async' would be sooooo cool...

* fix(frontend): Prevent zoom on double click when using area measurement

* chore(viewer-lib): Refined and fomralized a bit now that the general idea of a measurement has got more complex

* chore(viewer-lib): Moved state switching a bit

* chore(viewer-lib): Replaced the old disc normal indicator with the new one and made it standard. Added an option to the gizmo's style that determines the pixels size of the normal indicator

* chore(viewer-lib): Documented the area measurement tool

* chore(viewer-lib): Some updates:
- Implemented proper bounds getter for area measurement
- Got rid of the static vector buffers in Measurement and replaced them with consts where needed
- Reduced the min click timing from 250ms to 150ms
- Other small adjustments

* feat(viewer-lib): Added the option to chain measurements

* chore(frontend-2): Added toggle for measurement chaining

* chore(viewer-lib): Perpendicular measurement chaining now align on the same line as requested

* feat(viewer-lib): Implemented point (coordinate) measurement:
- Added support for billboard offseting in NDC in the shader via vec2 offset uniform. Not a dream come true, but required mostly because of how troika works
- SpeckleText background now follows text anchoring
- Implemented new POINT measurement type

* chore(viewer-lib): Separated label position calculation. We now update only the label transform each frame, instead of updating the entire label redunantly

* chore(viewer-lib): Offsets are now constants. Removed redundant vector and matrix creation

* chore(frontend-2): Placeholder radio button for point measurement type. Fixed compile errors

* fix(viewer-lib): Fixes WEB-3105. Export all measurement types

* updated icons

* Update description

---------

Co-authored-by: andrewwallacespeckle <andrew@speckle.systems>
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-05-26 12:10:19 +03:00
Alexandru Popovici b50076ee29 Explode + Outlines (#4792)
* fix(viewer-lib): Implemented event for explode extension that allows section outline to sync up

* chore(sandbox): Fixed compile error
2025-05-22 10:03:31 +03:00
Alexandru Popovici daefbbf2a3 fix(viewer-lib): Added relative epsilon to section outlines. Added constant epsilon to setting orbit controls position and target (#4781) 2025-05-22 09:43:00 +03:00