@@ -25,6 +25,7 @@ You should have received a copy of the GNU General Public License along
2525using OBSWebsocketDotNet ;
2626using OBSWebsocketDotNet . Types ;
2727using OBSWebsocketDotNet . Types . Events ;
28+ using Newtonsoft . Json ;
2829
2930namespace TestClient
3031{
@@ -329,17 +330,45 @@ private void btnConnect_Click(object sender, EventArgs e)
329330
330331 private void btnListScenes_Click ( object sender , EventArgs e )
331332 {
332- var scenes = obs . ListScenes ( ) ;
333+ var scenes = obs . GetSceneList ( ) . Scenes ;
333334
334335 tvScenes . Nodes . Clear ( ) ;
335336 foreach ( var scene in scenes )
336337 {
337338 var node = new TreeNode ( scene . Name ) ;
338- var sources = new List < SceneItemDetails > ( ) ;
339- sources . AddRange ( obs . GetSceneItemList ( scene . Name ) ) ;
340- foreach ( var item in sources )
339+ var itemList = obs . GetSceneItemList ( scene . Name ) ;
340+ var groupList = obs . GetGroupList ( ) ;
341+ groupList . RemoveAll ( x => ! itemList . Any ( y => y . SourceName . Equals ( x ) ) ) ;
342+
343+ if ( groupList . Count > 0 )
344+ {
345+ foreach ( var name in groupList )
346+ {
347+ var group = new ObsScene { Name = name , Items = new List < SceneItemDetails > ( ) } ;
348+ var parentNode = node . Nodes . Add ( group . Name ) ;
349+
350+ foreach ( var item in obs . GetGroupSceneItemList ( group . Name ) )
351+ {
352+ group . Items . Add ( JsonConvert . DeserializeObject < SceneItemDetails > ( item . ToString ( ) ) ) ;
353+ }
354+
355+ if ( group . Items . Count ( ) > 0 )
356+ {
357+ foreach ( var groupSceneItem in group . Items )
358+ {
359+ parentNode . Nodes . Add ( groupSceneItem . SourceName ) ;
360+ }
361+ }
362+ }
363+ }
364+
365+ var items = obs . GetSceneItemList ( scene . Name ) . Where ( x => ! ( bool ) groupList ? . Any ( y => y . Equals ( x . SourceName ) ) ) ;
366+ if ( items != null && items . Count ( ) > 0 )
341367 {
342- node . Nodes . Add ( item . SourceName ) ;
368+ foreach ( var item in items )
369+ {
370+ node . Nodes . Add ( item . SourceName ) ;
371+ }
343372 }
344373
345374 tvScenes . Nodes . Add ( node ) ;
0 commit comments