#Changelog for the Roomle Core (Configurator and Planner)

# [ 1.11.0 C3.5.0 ] - 2022-05-19

# Added

  • [C] new conversion functions stringToArray, stringToVector2f and stringToVector3f
  • Emscripten interface optimization: Request properties of multiple materials at once
  • Emscripten interface optimization: Send properties of multiple materials at once

# Fix

  • [C] swap order of componentMetaUpdated and componentConfigurationUpdated callback
  • [C] improve parse error messages

# [ 1.10.0 C3.4.0 ] - 2022-05-05

# Added

  • [C] "label" script for value objects

# [ 1.9.3 C3.3.3 ] - 2022-04-21

# Fix

  • python core build

# [ 1.9.2 C3.3.2 ] - 2022-04-21

# Changed

  • Built-in Corto decoder

# Fix

  • [C] script path in tun-time error messages

# [ 1.9.1 C3.3.1 ] - 2022-04-07

# Fix

  • [C] performance optimizations
  • [C] context map cache

# [ 1.9.0 C3.3.0 ] - 2022-03-24

# Added

  • only snap objects with the same level

# Changed

  • update ANTLR from version 4.8 to version 4.9.3

# [ 1.8.0 C3.2.0 ] - 2022-03-10

# Added

  • break and return statements
  • allow single statement without curly braces in if, else and for blocks this enables if-else if-else statements

# Changed

  • remove MAX_CACHED_VERTICES_PER_CONSTRUCTOR, compute mesh hash and compare

# [ 1.7.0 C3.1.0 ] - 2022-03-01

# Added

  • [C] environment geometry

# Changed

  • [C] script execution performance, backup and restore parameters

# Fix

  • Ply files with quad faces
  • Vertices of plain cube and cylinder

# [ 1.6.1 C3.0.1 ] - 2022-02-15

# Fix

  • order of use of the docking points for identical docking point positions

# [ 1.6.0 C3.0.0 ] - 2022-01-27

# Fix

  • skip unnecessary mesh vertices

# Added

  • release of the ANTLR parser
  • added component ID in parse error messages
  • snapping objects to objects on the floor and walls
  • [C] dynamic docking change
  • [C] supersed override key and group

# [ 1.5.1 C2.25.1 ] - 2021-12-02

# Fixed

  • [C] ignore assignments in self-references of component definitions
  • [C] ignore multiple self-references in component definitions

# Added

  • [C] added the component runtime IDs to the parts list
  • plugin: Blue Ocean, Proof of Concept

# [ 1.5.0 C2.25.0 ] - 2021-11-18

# Fixed

  • [C] performance issues with docking of siblings

# Changed

  • [C] extract corto library from core regarding the license terms

# Added

  • [C] new optional argument in the string function for floating point decimal places
  • enable dragging of objects on walls

# [ 1.4.0 C2.24.0 ] - 2021-07-29

# Added

  • [C] onUpdate in ConnectionWithAssignments (docking, siblings)
  • [C] other_connection is now avaiblable in condition and assignmentScripts on ConnectionWithAssignments

# [ 1.3.35 C2.23.3 ] - 2021-04-22

# Fixed

  • [C] rounding error in formatting of inch/feet

# [ 1.3.34 C2.23.2 ] -

# Fixed

  • [C] bug in handling of maxConnections on siblings

# [ 1.3.33 C2.23.1 ] - 2021-02-12

# Fixed

  • [C] now really keeping track of already requested material properties
  • [C] fallback value of parameter now also considers materials in groups (if they are provided)
  • [C] builtin intersection no longer returns null if variables are not there or not arrays. now guaranteed to return an array.
  • float error in unitmeasure formatter that lead to 3" 12' (instead of 4") being displayed in some cases

# [ 1.3.32 C2.23.0 ] - 2021-01-28

# Fixed

  • [C] (x/y)FromVector now also works with Vector2f

# Added

  • [C] function intersection to get the intersection of two arrays

# [ 1.3.31 C2.22.4 ] - 2021-01-13

# Fixed

  • handling of subcomponents with supersedings in dockPreview
  • parsing vectors in "object"-parameters from serialized configuration

# Added

  • isDeltaUpdate in ems-boundary beingConstruction

# [ 1.3.30 C2.22.3 ] - 2020-10-08

# Fixed

  • hashing of geometry lead to collisions in special cases.
  • registration of superseded parameters as global

# [ 1.3.29 C2.22.2 ] - 2020-09-10

# Fixed

  • [C] Crash when dock-assignment scripts manipulate values that are read in other dock assignments of the same dockpoint

# [ 1.3.28 C2.22.1 ] - 2020-07-03

# Added

  • [C] visible and visibleAsGlobal fields are added in PossibleChild to hide the chidren from global and local context

# [ 1.3.27 C2.22.0 ] - 2020-06-05

# Changed

  • [C] all meshes are now sent as named meshes. baked meshes get generated uids (geometryHashes).

# [ 1.3.26 C2.21.1 ]

# Added

  • [C] PluginData:imos: added active flag

# [ 1.3.25 C2.21.0 ] - 2020-05-06

# Added

  • [C] IMOSGenerator to convert imos-ready roomle components into pxm files (grade a or b) for imos import
  • [C] PluginData in rml components for adding plugin-specific data.
  • [C] imos pluginData

# [ 1.3.24 C2.20.1 ] - 2020-04-23

# Changed

  • adapted cmakeList for new emscripten compiler

# [ 1.3.23 C2.20.1 ] - 2020-04-09

# Changed

  • boundary adaptions and small fixes

# [ 1.3.22 C2.20.0 ] - 2020-03-25

# Added

  • added transform matrix to the plancomponent and also possibility to define a docking rotation by axis and angle

# [ 1.3.21 C2.19.0 ] - 2020-02-26

# Added

  • now updating sibling connections after every change in the configuration. previously they were only docked and undocked on docking/undocking of the whole component.
  • previously their was no check to validate whether the param values are with in the range or whether value is valid during preview, check is added to verify whether paramvalues after updation are in the valid values list, if not default value is updated(first value in the list).

# [ 1.3.20 C2.18.1 ] - 2020-02-12

# Changed

  • [C] Performance improvement

# [C2.18.0] - 2020-01-30

# Added

  • added setActiveGroupInView in ConfiguratorKernel and getACtiveViewInGroup() to roomlescript
  • in PossibleChild added param 'group'

# Changed

  • relaxed parsing of floats in RoomleScript: unparseable float now doesn't throw an exception but only logs an error and returns 0.

# [C2.17.2] - 2020-01-16

# Added

  • added setMaterialProperties in ObjectsManager
  • added bevel param in AddPrism, AddCylinder and AddCube where bevel value 0 creates respective sharp geometry shapes.

# [C2.17.1]

  • added parameter context to onValueChange execution with parameter.userTriggeredChange
  • added property meshChanged to component_configuration_updated callback
  • increased MAX_CACHED_VERTICES_PER_CONSTRUCTOR to 10000 for the meshChanged to work properly
  • dockParent, dockChild and dockPosition are now serialized in evaluated form to the configuration

# 2.17.0

  • global params take value from consensus now

# 2.16.2

  • bakedMeshes have the pivot now at the center of the bounding box

# 2.16.1

  • added subpartId to partlist

# 2.16.0

  • speed improvements in Script evaluation

# 2.15.1

  • update-process redefinition part 2
  • labelInPartlist added

# 2.15.0

  • update-process redefinition part 1
  • issues

# 2.14.0

  • partlist is now also aggregated per mainComponents (defineable in subcomponents)
  • Parameterrestrictions

# 2.13.2

  • fixes

# 2.13.0

  • variantlist: now possible to only get articleNrs for massive speed improvement
  • BREAKING: emscripten interface requestVariantList additional Parameter

# 2.12.3

  • bugfixes
  • speed improvements for variantList calculation

# 2.12.2

  • bugfixes

# 2.12.0

  • added connection.isPreview to all docking scripts

# 2.11.1

  • dimensions now contain maxLevel (the max level within the type)
  • on preview also considers assignments to parent now. It doesn't permanently change the parent, but changes affecting the docking or recursive assignments are considered.
  • subComponents with active = false are ignored completly (no updates whatsoever). the default for active is switched to true.
  • massive speed improvements by better handling of internal script execution

# 2.11.0

  • variantlist now includes subcomponents (including supersedings) and range parameters
  • FIX allow for nested superseding parameters ###breaking changes in 2.11.0
  • variantlist elements no longer contains articleNr and price but a full partlist resulting from this parametercombination
  • parameterValues of variants are now a vector of vectors including all combination of parameters leading to this partlist

# 2.10.1

  • added "other." to docking condition. references the preview or the first docked element (if any)
  • FIX order of children in serialized configuration
  • FIX execution context of onValueChange etc. for supersedings and parameters

# 2.10.0

  • changed way of parsing/storing scripts of range-dockings for massive performance improvements
  • only evaluate dockCondition when result is needed.
  • added getUniqueRuntimeId to RoomleScript

# 2.9.2

  • added requestMergedConstructionCallsForPlanObject
  • added hash to plancomponent and configuratorKernel::getHashOfPlanComponentItself

# 2.9.1

  • dimensionings: components can have dimensionings now
  • dockPointRange: try to keep as many docked children as possible, if positions dont match: trying index

# 2.9.0

  • MemoryManagement for Meshes and Components
  • active & supersedings in subcomponents

# 2.8.1

  • fixes

# 2.8.0

  • ThreeJS now also uses namedMeshes

# 2.7.3

  • added visibleAsGlobal to parameters

# 2.7.2

  • added groups to global and commonParams. ###breaking changes in 2.7.2
  • changed getCommonParameters to getCommonParametersAndGroups with different returnValue

# 2.7.1

  • fix string conversion for HSC. We now always convert from js_string (=utf16) to std::string (=utf8)

# 2.7.0

  • added connection.index and connection.position in expression of connections

# 2.6.1

  • bugfixes
  • added assignmentScripts

# 2.6.0 (started 2018-05-15)

  • added getAddOnSpotsForObject
  • added AddExternalMesh to script
  • added corto for meshdecoding

# 2.5.2

  • added AddOnSpots in script

# 2.5.1

  • added 'default' to possibleChildren
  • added step to Range (of Parametervalues)

# 2.5.0

  • LifecycleManagement for PlanComponents
  • calcHashOfConfiguration

# 2.4.0

  • added array access (get, set, pushBack, popBack, inArray, indexOf, length)

# 2.3.1

  • added getDockPositionRelativeToParentDock in RoomleScript
  • improved handling of Child on Dockline when dockline changes

# 2.3.0 (started 2018-02-05)

  • Vector3f in roomleScript
  • getDockPosition & getPosition in roomleScript

# 2.2.1 (started 2018-01-24)

  • added setBoxForMeasurement in onUpdate

# 2.2.0 (started 2018-01-09)

  • added maxChildren to DockLine
  • added parameterGroups

# 2.1.1 (started 2017-12-08)

  • dynamic Ranges (valueFrom and valueTo as expression)
  • onValueChange is now executed also initally (on change from NoValue to Value)

# 2.1.0 (started 2017-11-27)

  • added fuzzy matching to dockpoints on configurationloading
  • improved speed for Components with lots of parameters
  • added common-parameters logic
  • added isVisible to script

# 2.0.0 (started 2017-05-23)

  • added getAggregatedPlanComponentList in Kernel
  • added ComponentConstructor with Scenegraph -> own bounds calc
  • removed callbacks for getting dimensions (done within kernel now)
  • removed position and rotation of planObject. shouldnt be used anyway.
  • removed old geometry-callbacks, only bakedMesh is used anymore!
  • no longer sending dockPoints to the view, previewAssoc now contains all needed info (position, rotation etc.)
  • dockComponent now uses the componentPosition not the dockPosition (cause view no longer knows anything about the dockings)

# 1.10.4 (started 2017-06-22)

  • added getPlanObjectChildren
  • added packaging and packageSize calculation

# 1.10.3 (started 2017-05-23)

  • added getAggregatedPlanComponentList in Kernel
  • added geometryHD to Component
  • fixes in boundary

# 1.10.2 (started 2017-05-10)

  • kernel now calculates position of component on Dock
  • memory fixes

# 1.10.1 (started 2017-04-09)

  • added requestRecursivePlanComponentConstruction

# 1.10.0 (started 2017-03-30)

  • PartListParameterDTO
  • new communication: kernel no longer sends any complex data on its own, only on request
  • sending construction only on request
  • aggregating changes during setParameter and dockComponent

# 1.9.6 (started 2017-03-02)

  • disabled parameters can no longer be changed via setPlanComponentParameter
  • heaps of memory fixes

# 1.9.5 (started 2016-09-28)

  • add AddPlainCube command
  • added setVisible and setEnabled

# 1.9.4 (started 2016-09-19)

  • added builtin function float()
  • added possibility to include seperate priceList on loading ComponentDefinition
  • priceScript now has articleNr accessible
  • fixes in ScriptParser

# 1.9.3

  • fix: onDock was done even on load configuration
  • added builtin function size() for determining size of a string

# 1.9.2

  • onUpdate of component called as onInit after loading
  • onUpdate triggered when changed from docking too

# 1.9.1

  • send construction calls only on request
  • added math functions
  • added isnull, isenabled, string-functions
  • added in(...) condition
  • added math-constants

# 1.9.0

  • onUpdate added to PlanComponent, Parameter and ValueObject
  • onValueChange and afterValueChange added to Parameter

# 1.8.4

  • bugfix on docking

# 1.8.3

  • parameter validation now triggers update
  • added silent update assignments

# 1.8.2

  • added global Parameter to preview Geometry
  • fixes in geometryscript (dimensioningpoints lead to crash)

# 1.8.1

  • added child Dockings to preview calls

# 1.8.0

  • added preview geometry

# 1.7.4

  • global params stay visible as long as they are enabled, even if the local param is invisible

# 1.7.3

  • added math functions round,floor and ceil
  • fix possible crash on delete PlanObject with multiple children.

# 1.7.2

  • fixes for const struct

# 1.7.1

  • clearAll now also resets the pricelist
  • added requestListOfVariants(componentId)
  • added setMaterialsForGroup
  • added isValid(planComponentId) in Kernel

# 1.7.0

  • added Unity target, needed changes in templates etc.
  • removed cryptopp dependency, Hasher now does the SHA256 itself
  • removed Wizard: was special Umdasch thing. No longer wanted
  • FIX: validity of addMesh: nrUV must be nrIndices

# 1.6.6

  • fix parameterupdate of subparts
  • added unitTypeString to Parameter

# 1.6.5

  • fix: cached hash in configurationLoaded

# 1.6.4

  • ScriptRunner: reduced copying of parameterset on running script
  • improved setPlanObjectParam: no more n^2 but only n updates
  • improved timing
  • strip Log debug and verbose calls from code if flag not set
  • added optional objectId to update call
  • Fix problem in setPlanObjectParameter (cache invalidation)

# 1.6.2 2016-01-28

  • added possibleChildren with itemIds and condition
  • added loadFreeFlyingConfiguration for loading those linked configurations
  • changed docking: if a rootComponent is docked, the parentObject is deleted
  • improved Value.equals to better compare different types of values
  • fix with global params and dockings

# 1.5.8b

  • added selfAssignments
  • changed internal structure of connections

# 1.5.7 2015-12-02

  • retailPrice in PriceList
  • field valid in Component

# 1.5.6 2015-11-27

  • sort and highlight for Parameters
  • component_configuration_updated no longer sends empty hash -> no more hash!
  • Fix problem on dock update delete problem stuff

# 1.5.4 2015-11-24

  • global/PlanObject Parameters

# 1.5.2 2015-11-13:

  • added new AddRectangle with UvMod

# 1.5.0 2015-11-13:

  • english is default language now
  • added visibleInPartList field to hide Parameters in PartList

# 1.4.8 2015-10-22

  • initial Position of PlanComponent is now 0,0,-1000
  • Script.Functions: added isValid
  • new geometryCalls with UVModification and UVCoord for Meshes

# 1.4.7 2015-09-30:

  • Made Comments in scripting possible
  • On Update currentValue is clamped to possible Values
  • added getPlanObjectList