Beispiel #1
0
        public static List <Ingredient> GetProteinIngredients(Compartment rootCompartment)
        {
            var ingredients = new List <Ingredient>();
            var queue       = new Queue <Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();

                foreach (var ingredientGroup in currentCompartment.IngredientGroups)
                {
                    //if (ingredientGroup.group_type == (int)IngredientGroupType.INTERIOR_PROTEINS || ingredientGroup.group_type == (int)IngredientGroupType.SURFACE_PROTEINS)
                    if (true)
                    {
                        ingredients.AddRange(ingredientGroup.Ingredients);
                    }
                }

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return(ingredients);
        }
        public static List<IngredientGroup> GetIngredientGroups(Compartment rootCompartment)
        {
            var groups = new List<IngredientGroup>();
            var queue = new Queue<Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                groups.AddRange(currentCompartment.IngredientGroups);

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return groups;
        }
        public static List<Compartment> GetCompartments(Compartment rootCompartment)
        {
            var compartments = new List<Compartment>();
            var queue = new Queue<Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                compartments.Add(currentCompartment);

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return compartments;
        }
Beispiel #4
0
        public static List <IngredientGroup> GetIngredientGroups(Compartment rootCompartment)
        {
            var groups = new List <IngredientGroup>();
            var queue  = new Queue <Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                groups.AddRange(currentCompartment.IngredientGroups);

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return(groups);
        }
Beispiel #5
0
        public static List <Compartment> GetCompartments(Compartment rootCompartment)
        {
            var compartments = new List <Compartment>();
            var queue        = new Queue <Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                compartments.Add(currentCompartment);

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return(compartments);
        }
        public static void LoadRecipe(Compartment rootCompartment)
        {
            // Flatten all the hierarchy
            //SceneManager.Get.Compartments = CompartmentUtility.GetCompartments(rootCompartment);
            SceneManager.Get.IngredientGroups = CompartmentUtility.GetIngredientGroups(rootCompartment);
            //SceneManager.Get.ProteinIngredients = CompartmentUtility.GetProteinIngredients(rootCompartment);

            for (var i = 0; i < SceneManager.Get.IngredientGroups.Count; i++)
            {
                for (var j = 0; j < SceneManager.Get.IngredientGroups[i].Ingredients.Count; j++)
                {
                    var ingredient = SceneManager.Get.IngredientGroups[i].Ingredients[j];

                    AddProteinIngredient(ref ingredient);
                    SceneManager.Get.ProteinInstanceCount += ingredient.nbMol;
                    SceneManager.Get.IngredientGroups[i].NumIngredients += ingredient.nbMol;
                }
            }

            ColorManager.Get.InitColors();
        }
        public static void PostProcessSceneGraph(Compartment rootCompartment)
        {
            var compartments = new List<Compartment>();
            var queue = new Queue<Compartment>();

            rootCompartment.parent_id = -1;
            rootCompartment.path = "root";

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                compartments.Add(currentCompartment);

                foreach (var ingredientGroup in currentCompartment.IngredientGroups)
                {
                    ingredientGroup.compartment_id = currentCompartment.unique_id;
                    ingredientGroup.path = currentCompartment.path + PATH_SEPARATOR + ingredientGroup.name;

                    foreach (var ingredient in ingredientGroup.Ingredients)
                    {
                        ingredient.name = ingredient.name.Split(new[] {"__"}, StringSplitOptions.RemoveEmptyEntries).Last().Trim();
                        ingredient.ingredient_group_id = ingredientGroup.unique_id;
                        ingredient.path = ingredientGroup.path + PATH_SEPARATOR + ingredient.name;
                    }
                }

                foreach (var compartment in currentCompartment.Compartments)
                {
                    compartment.parent_id = currentCompartment.unique_id;
                    compartment.path = currentCompartment.path + PATH_SEPARATOR + compartment.name;
                    queue.Enqueue(compartment);
                }
            }
        }
Beispiel #8
0
        public static void PostProcessSceneGraph(Compartment rootCompartment)
        {
            var compartments = new List <Compartment>();
            var queue        = new Queue <Compartment>();

            rootCompartment.parent_id = -1;
            rootCompartment.path      = "root";

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();
                compartments.Add(currentCompartment);

                foreach (var ingredientGroup in currentCompartment.IngredientGroups)
                {
                    ingredientGroup.compartment_id = currentCompartment.unique_id;
                    ingredientGroup.path           = currentCompartment.path + PATH_SEPARATOR + ingredientGroup.name;

                    foreach (var ingredient in ingredientGroup.Ingredients)
                    {
                        ingredient.name = ingredient.name.Split(new[] { "__" }, StringSplitOptions.RemoveEmptyEntries).Last().Trim();
                        ingredient.ingredient_group_id = ingredientGroup.unique_id;
                        ingredient.path = ingredientGroup.path + PATH_SEPARATOR + ingredient.name;
                    }
                }

                foreach (var compartment in currentCompartment.Compartments)
                {
                    compartment.parent_id = currentCompartment.unique_id;
                    compartment.path      = currentCompartment.path + PATH_SEPARATOR + compartment.name;
                    queue.Enqueue(compartment);
                }
            }
        }
        public static List<Ingredient> GetProteinIngredients(Compartment rootCompartment)
        {
            var ingredients = new List<Ingredient>();
            var queue = new Queue<Compartment>();

            queue.Enqueue(rootCompartment);

            while (queue.Count > 0)
            {
                var currentCompartment = queue.Dequeue();

                foreach (var ingredientGroup in currentCompartment.IngredientGroups)
                {
                    //if (ingredientGroup.group_type == (int)IngredientGroupType.INTERIOR_PROTEINS || ingredientGroup.group_type == (int)IngredientGroupType.SURFACE_PROTEINS)
                    if (true)
                    {
                        ingredients.AddRange(ingredientGroup.Ingredients);
                    }
                }

                foreach (var compartment in currentCompartment.Compartments)
                {
                    queue.Enqueue(compartment);
                }
            }

            return ingredients;
        }