ossia / libossia

A modern C++, cross-environment distributed object model for creative coding and interaction scoring
https://ossia.io
GNU Lesser General Public License v3.0
204 stars 33 forks source link

[ossia - max] latest release regenerates node tree when new model is added #832

Open maybites opened 11 months ago

maybites commented 11 months ago

consider the follwing patcher:


----------begin_max5_patcher----------
1386.3oc6asrbqhCDcs8WAkV6IEO8i6pY9JlEolxEFTr0MXIJgbhyj59uO5A
fQ.BvNOpaxnEAbZgftOpUejNE757YfcjyvBfyObt2Y1rWmOalzjvvrx+eF3X
74jr3B4kAvvmI69IXgpIF7LSZNmhvrJq3SGQ3LHS1CuRi4wrjCH79sTXBS8D
2r7N2ENKWINF3KN5yO57OWtMjSrp6iaoUTp7Axch+XEPX5WymKNr3sE.jhBT
7covmPIPmh7XZxi2V33KCGOufNwSBIiPUWp6cd9QgaVv+wpMKcWsV7q0aB87
3+xyHFT8vUlXujCU2N.ntCMfm0uc34oXJN9n7o.dlPejCLIvtC9N+c61zvL2
wvLOO4o0tWeNfOn4MGRKCsxXaF3ATF7IHs.QvMPvYf377Flm0nKB.4mpAp0K
pMgvJSKqMQ44JU82s1JOw4.hwiuSTErcdYH3xsgjBo3SHoqnLxGZJcI4ff.t
UHonyhwpplu.ZKWFImxrbi3TXf7jWzlK3FeTdeFI4QXZSuCPxgXDNmBKfXVL
qkyCRgODeJis8ABlUf9WoK3IlW1S6OT5h81XcNyeQQwY0QvdJJkfENg1Pgvb
0i6ddbnhllAi7Jvw48zYdN.GWLzXAOHOUrKlJFo1kIeB9UMxHjL8lp6WF7AV
Yy4HLtEJxH4lajh1eXf9tiva73P2aYKEaOgUstkmTv1VD+jNZyhyxJmppe6O
GiQGiYPFRMD36V2HDGyCzCEITRVlV7pZ4odZQUP7YTJ6f7A0LYfe4n7pjHP8
nbJZOrfoaiEuuP2RA6EEn2vzockSh2xfGyy3Qg9EvmdfJXEGHOWTdgUIZMAf
K7YMmT2rtml8V0+Xj86yf0yXMT92T4L+.YgrUqkExBqNVmIarjd+k0EbpZ8s
QguHflqP4HAiibpgRIlT0rjAnrTyMhJZrBsK9yGqXuXDwbmDhon+i7ZS.bsH
lQ3ZInsebgqPOxMxYXh2nU26i+v.GhYdjw4RLwmnwoLAdkVbKQJxDO4okgRF
4PAwbSfse5kIPwLEZlQoZlHcy.TNSi1YDpmQoeFkBZDZnwohFkNZBTRSgV5Z
nlFfdZTJpgooFlpZX5pAorLQa0O0kA5qIQgMQZr9oxZWmocw6Ns2pHtpXoVA
jAn2LUvNHRVpNvUssM2piZSaLtz89JMutsKkPNdDh6NVH6GNEdtU4tFTb5zb
uUDqyhAtIDyeiDwVGYdQACSyMsEGzc2wcbsAVjvGHJ1YwC8syaJ7HgAcdWQb
uMaLrWbCXdvXXNXQ4eCA7QfuNolgdM.pOubyvuT4l0NWY5oyeJBUmcbBw2qL
0fxD1nIlo5OoL0gFB7A+t.uhEwl0YWD2Db54pAmtalHbNZB8fPo2PPo9xIyP
3wH0kgk35FFmKHmnIUtW4bJmtwIeMOLDtdg32Wu4Qw0dSY.2p+EcE9W+wBgl
p1zl2usN95gcb2OUGe0U339ilQznwl6uDH1.P5V0Fg1FyXTztSLURdeat9lV
DNe2l6hyZsZYSqSed2.3cPBj2lvPdqjDsqC93EFx+6gvPkHVvpOXggBrBCYE
FxJLjUXHqvPVggrBCYEFxJLjUXHqvPVgg91HLz6qL.V8U95qn06qTgVggdKB
C4pd0G+DdigB+lHLjBwB+neig7rBCYEFxJLjUXHqvPVggrBCYEFxJLjUXHqv
PVggruwPV8UruwP++4MF5x2gXm4hWTEoODug1HcP5ksQ5oMuaPkYtVeHXh9f
+GnO3MQeHznOTZrJCarrqWukuewgylZmIobtxO7ZYrom4n9NraiTkeM1cPHs
BDFPmUWPGsGaKsmDOhVZM0RiotZKYVSo1ZIIGALocz7eM++Pr4C4b
-----------end_max5_patcher-----------

on the console you will find the following output:

print: node created sparck:/empty
print: node created sparck:/empty/toggle
print: parameter created sparck:/empty/toggle
  1. open subpatcher "workspace"
  2. copy paste subpatcher "empty"

the folloing output appears:

print: parameter removed sparck:/empty/toggle
print: node removed sparck:/empty/toggle
print: node removed sparck:/empty
print: node created sparck:/empty
print: node created sparck:/empty/toggle
print: parameter created sparck:/empty/toggle
print: node created sparck:/empty.1
print: node created sparck:/empty.1/toggle
print: parameter created sparck:/empty.1/toggle
  1. repeat it again:
print: node created sparck:/empty.2
print: node created sparck:/empty.2/toggle
print: parameter created sparck:/empty.2/toggle

In my opinion the effect after step 2 this is undesired behaviour. It shouldn't rebuild the whole node tree, but only add the new nodes sparck:/empty.1 and sparck:/empty.1/toggle.

this behaviour is undesired because once you load a patcher and load parameters into the node tree and then add another node, you loose all the parameters loaded and you have to reload them again.