@@ -16,7 +16,6 @@ export const EditorContext = React.createContext<{
1616 setModels : React . Dispatch < React . SetStateAction < EditorModel [ ] > > ;
1717 selectedModel : EditorModel | null ;
1818 selectModel : ( model : EditorModel | null ) => void ;
19- //setSelectedModel: React.Dispatch<React.SetStateAction<EditorModel | null>>;
2019 camTargetZ : number ;
2120 setCamTargetZ : React . Dispatch < React . SetStateAction < number > > ;
2221 minShade : number ;
@@ -29,6 +28,8 @@ export const EditorContext = React.createContext<{
2928 setGlobalShift : React . Dispatch < React . SetStateAction < vec3 | null > > ;
3029 loadingStatus : string ;
3130 setLoadingStatus : React . Dispatch < React . SetStateAction < string > > ;
31+ selectedSubmodels : number [ ] ;
32+ setSelectedSubmodels : React . Dispatch < React . SetStateAction < number [ ] > > ;
3233} | null > ( null ) ;
3334
3435export function ContextComponent ( props : { children : React . ReactNode } ) {
@@ -38,6 +39,7 @@ export function ContextComponent(props: { children: React.ReactNode }) {
3839 const [ selection , setSelection ] = React . useState ( new GL . SelectionManager ( ) ) ;
3940 const [ models , setModels ] = React . useState < EditorModel [ ] > ( [ ] ) ;
4041 const [ selectedModel , setSelectedModel ] = React . useState < EditorModel | null > ( null ) ;
42+ const [ selectedSubmodels , setSelectedSubmodels ] = React . useState < number [ ] > ( [ ] ) ;
4143
4244 const [ camTargetZ , setCamTargetZ ] = React . useState < number > ( 0 ) ;
4345 const [ minShade , setMinShade ] = React . useState < number > ( 0 ) ;
@@ -55,6 +57,18 @@ export function ContextComponent(props: { children: React.ReactNode }) {
5557 } ) ;
5658 } ;
5759
60+ React . useEffect ( ( ) => {
61+ const onChange = ( ) => {
62+ setSelectedSubmodels ( selection . selected . map ( ( obj ) => obj . identifier ) ) ;
63+ } ;
64+
65+ selection . onSelect = onChange ;
66+
67+ return ( ) => {
68+ selection . removeOnSelect ( onChange ) ;
69+ } ;
70+ } , [ selection , setSelectedSubmodels ] ) ;
71+
5872 React . useEffect ( ( ) => {
5973 const onChange = ( ) => {
6074 const copy = scene . objects . filter ( ( obj ) => obj instanceof EditorModel ) as EditorModel [ ] ;
@@ -104,6 +118,8 @@ export function ContextComponent(props: { children: React.ReactNode }) {
104118 setGlobalShift,
105119 loadingStatus,
106120 setLoadingStatus,
121+ selectedSubmodels,
122+ setSelectedSubmodels,
107123 } }
108124 >
109125 { props . children }
0 commit comments