@@ -387,8 +387,28 @@ function sceneOptions(container, subplot, trace, positions) {
387387
388388 if ( hasMarkers ) {
389389 markerOptions = makeMarkerOptions ( markerOpts ) ;
390- selectedOptions = trace . selected ? makeMarkerOptions ( extend ( { } , markerOpts , trace . selected . marker ) ) : markerOptions ;
391- unselectedOptions = trace . unselected ? makeMarkerOptions ( extend ( { } , markerOpts , trace . unselected . marker ) ) : markerOptions ;
390+
391+ if ( trace . selected . marker . symbol ) {
392+ selectedOptions = makeMarkerOptions ( extend ( { } , markerOpts , trace . selected . marker ) ) ;
393+ }
394+ // shortcut simple selection logic
395+ else {
396+ selectedOptions = { } ;
397+ if ( trace . selected . marker . size ) selectedOptions . sizes = trace . selected . marker . size ;
398+ if ( trace . selected . marker . color ) selectedOptions . colors = trace . selected . marker . color ;
399+ if ( trace . selected . marker . opacity !== undefined ) selectedOptions . opacity = trace . selected . marker . opacity ;
400+ }
401+
402+ if ( trace . unselected . marker . symbol ) {
403+ unselectedOptions = makeMarkerOptions ( extend ( { } , markerOpts , trace . unselected . marker ) ) ;
404+ }
405+ // shortcut simple selection logic
406+ else {
407+ unselectedOptions = { } ;
408+ if ( trace . unselected . marker . size ) unselectedOptions . sizes = trace . unselected . marker . size ;
409+ if ( trace . unselected . marker . color ) unselectedOptions . colors = trace . unselected . marker . color ;
410+ if ( trace . unselected . marker . opacity !== undefined ) unselectedOptions . opacity = trace . unselected . marker . opacity ;
411+ }
392412
393413 markerOptions . positions = positions ;
394414 }
@@ -911,7 +931,7 @@ function plot(container, subplot, cdata) {
911931 if ( ! scene . select2d && scene . scatter2d ) {
912932 var selectRegl = layout . _glcanvas . data ( ) [ 1 ] . regl ;
913933
914- // smol hack to create scatter instance by cloning scatter2d
934+ // create scatter instance by cloning scatter2d
915935 scene . select2d = createScatter ( selectRegl , { clone : scene . scatter2d } ) ;
916936 scene . select2d . update ( scene . selectedOptions ) ;
917937
0 commit comments