From 78f4d961f71e36841374e4f171d666ede1114f7a Mon Sep 17 00:00:00 2001 From: CoudronJerome Date: Sun, 26 Mar 2023 23:15:09 +0200 Subject: [PATCH] Made modelChanging internal in SIgnPredictor Made it so that there is a function inside SignPredictor that is used to change its model --- Assets/Courses/Scripts/TemplateCourse.cs | 4 +--- .../Hangman/Scripts/HangmanGameController.cs | 2 +- .../MediaPipeUnity/Scripts/SignPredictor.cs | 19 +++++++++++++------ Assets/SpellingBee/Scripts/GameController.cs | 3 +-- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Assets/Courses/Scripts/TemplateCourse.cs b/Assets/Courses/Scripts/TemplateCourse.cs index 8bc2ad9..19b417a 100644 --- a/Assets/Courses/Scripts/TemplateCourse.cs +++ b/Assets/Courses/Scripts/TemplateCourse.cs @@ -128,9 +128,7 @@ public class TemplateCourse : MonoBehaviour { // Setting up course course = courselist.courses[courselist.currentCourseIndex]; - //feedback.signPredictor.model = course.theme.model; - feedback.signPredictor.modelList.SetCurrentModel(course.theme.modelIndex); - //feedback.signPredictor.model = feedback.signPredictor.modelList.models[feedback.signPredictor.modelList.currentModelIndex].model; + feedback.signPredictor.ChangeModel(course.theme.modelIndex); maxWords = course.theme.learnables.Count; // vvv TEMPORARY STUFF vvv diff --git a/Assets/Hangman/Scripts/HangmanGameController.cs b/Assets/Hangman/Scripts/HangmanGameController.cs index 3b83c67..9771fc6 100644 --- a/Assets/Hangman/Scripts/HangmanGameController.cs +++ b/Assets/Hangman/Scripts/HangmanGameController.cs @@ -242,7 +242,7 @@ public class HangmanGameController : MonoBehaviour userList.Save(); // Hangman always uses fingerspelling - feedback.signPredictor.model = feedback.signPredictor.modelList.GetModelByIndex(ModelIndex.FINGERSPELLING); + feedback.signPredictor.ChangeModel(ModelIndex.FINGERSPELLING); // Set calllbacks feedback.getSignCallback = () => diff --git a/Assets/MediaPipeUnity/Scripts/SignPredictor.cs b/Assets/MediaPipeUnity/Scripts/SignPredictor.cs index 6815ae3..fb02a82 100644 --- a/Assets/MediaPipeUnity/Scripts/SignPredictor.cs +++ b/Assets/MediaPipeUnity/Scripts/SignPredictor.cs @@ -18,13 +18,10 @@ namespace Mediapipe.Unity.Tutorial { public class SignPredictor : MonoBehaviour { - - public ModelList modelList; - /// - /// Reference to the model used in the SignPredictor + /// ModelList, used to change model using ModelIndex /// - public NNModel model; + public ModelList modelList; /// /// Reference to the model info file @@ -213,12 +210,22 @@ namespace Mediapipe.Unity.Tutorial // check if model exists at path //var model = ModelLoader.Load(Resources.Load("Models/Fingerspelling/model_A-L")); - worker = model.CreateWorker(); + worker = modelList.models[modelList.currentModelIndex].model.CreateWorker(); StartCoroutine(SignRecognitionCoroutine()); StartCoroutine(MediapipeCoroutine()); } + public void ChangeModel(ModelIndex index) + { + this.modelList.SetCurrentModel(index); + // If a worker already existed, we throw it out + worker?.Dispose(); + + // Add a new worker for the new model + worker = modelList.models[modelList.currentModelIndex].model.CreateWorker(); + } + /// /// Coroutine which executes the mediapipe pipeline /// diff --git a/Assets/SpellingBee/Scripts/GameController.cs b/Assets/SpellingBee/Scripts/GameController.cs index 6e22e68..d0605fc 100644 --- a/Assets/SpellingBee/Scripts/GameController.cs +++ b/Assets/SpellingBee/Scripts/GameController.cs @@ -182,8 +182,7 @@ public partial class GameController : MonoBehaviour userList.Save(); currentTheme = minigame.themeList.themes[minigame.themeList.currentThemeIndex]; - //feedback.signPredictor.model = currentTheme.model; - feedback.signPredictor.model = feedback.signPredictor.modelList.GetModelByIndex(currentTheme.modelIndex); + feedback.signPredictor.ChangeModel(currentTheme.modelIndex); words.AddRange(currentTheme.learnables); ShuffleWords(); NextWord();