Esempio n. 1
0
        internal static void LatePopulate(Scene sceneLoaded, LoadSceneMode mode)
        {
            if (populated)
            {
                return;
            }

            if (sceneLoaded.name.Equals("worldGenerated"))
            {
                // Obtains objects loaded into the game that might be useful
                foreach (Mesh mesh in Resources.FindObjectsOfTypeAll <Mesh>())
                {
                    if (!mesh.name.Equals(string.Empty) && !originMesh.ContainsKey(mesh.name.Replace("(Instance)", "")) &&
                        !(!mesh.name.EndsWith("(Instance)") && Regex.IsMatch(mesh.name, @".*\(.*\)")))
                    {
                        originMesh.Add(mesh.name.Replace("(Instance)", ""), mesh);
                    }
                }

                foreach (Material mat in Resources.FindObjectsOfTypeAll <Material>())
                {
                    if (!mat.name.Equals(string.Empty) && !originMaterial.ContainsKey(mat.name.Replace("(Instance)", "")) &&
                        !mat.name.StartsWith("Hidden/") && !materialBlacklist.Contains(mat.name) &&
                        !(!mat.name.EndsWith("(Instance)") && Regex.IsMatch(mat.name, @".*\(.*\)")))
                    {
                        originMaterial.Add(mat.name.Replace("(Instance)", ""), mat);
                    }
                }

                foreach (PhysicMaterial mat in Resources.FindObjectsOfTypeAll <PhysicMaterial>())
                {
                    if (!mat.name.Equals(string.Empty) && !originPhysMaterial.ContainsKey(mat.name.Replace("(Instance)", "")) &&
                        !(!mat.name.EndsWith("(Instance)") && Regex.IsMatch(mat.name, @".*\(.*\)")))
                    {
                        originPhysMaterial.Add(mat.name.Replace("(Instance)", ""), mat);
                    }
                }

                foreach (Texture tex in Resources.FindObjectsOfTypeAll <Texture>())
                {
                    if (!tex.name.Equals(string.Empty) && !originTexture.ContainsKey(tex.name.Replace("(Instance)", "")) &&
                        !(!tex.name.EndsWith("(Instance)") && Regex.IsMatch(tex.name, @".*\(.*\)")))
                    {
                        originTexture.Add(tex.name.Replace("(Instance)", ""), tex);
                    }
                }

                foreach (Sprite sprite in Resources.FindObjectsOfTypeAll <Sprite>())
                {
                    if (!sprite.name.Equals(string.Empty) && !originSprite.ContainsKey(sprite.name.Replace("(Instance)", "")) &&
                        !(!sprite.name.EndsWith("(Instance)") && Regex.IsMatch(sprite.name, @".*\(.*\)")))
                    {
                        originSprite.Add(sprite.name.Replace("(Instance)", ""), sprite);
                    }
                }

                foreach (AudioClip clip in Resources.FindObjectsOfTypeAll <AudioClip>())
                {
                    if (!clip.name.Equals(string.Empty) && !originClips.ContainsKey(clip.name.Replace("(Instance)", "")) &&
                        !(!clip.name.EndsWith("(Instance)") && Regex.IsMatch(clip.name, @".*\(.*\)")))
                    {
                        originClips.Add(clip.name.Replace("(Instance)", ""), clip);
                    }
                }

                foreach (SECTR_AudioCue cue in Resources.FindObjectsOfTypeAll <SECTR_AudioCue>())
                {
                    if (!cue.name.Equals(string.Empty) && !originCues.ContainsKey(cue.name.Replace("(Instance)", "")) &&
                        !(!cue.name.EndsWith("(Instance)") && Regex.IsMatch(cue.name, @".*\(.*\)")))
                    {
                        originCues.Add(cue.name.Replace("(Instance)", ""), cue);
                    }
                }

                foreach (SlimeSounds sound in Resources.FindObjectsOfTypeAll <SlimeSounds>())
                {
                    if (!sound.name.Equals(string.Empty) && !originSounds.ContainsKey(sound.name.Replace("(Instance)", "")) &&
                        !(!sound.name.EndsWith("(Instance)") && Regex.IsMatch(sound.name, @".*\(.*\)")))
                    {
                        originSounds.Add(sound.name.Replace("(Instance)", ""), sound);
                    }
                }

                foreach (RuntimeAnimatorController animator in Resources.FindObjectsOfTypeAll <RuntimeAnimatorController>())
                {
                    if (!animator.name.Equals(string.Empty) && !originAnimators.ContainsKey(animator.name.Replace("(Instance)", "")) &&
                        !(!animator.name.EndsWith("(Instance)") && Regex.IsMatch(animator.name, @".*\(.*\)")))
                    {
                        originAnimators.Add(animator.name.Replace("(Instance)", ""), animator);
                    }
                }

                foreach (Avatar avatar in Resources.FindObjectsOfTypeAll <Avatar>())
                {
                    if (!avatar.name.Equals(string.Empty) && !originAvatars.ContainsKey(avatar.name.Replace("(Instance)", "")) &&
                        !(!avatar.name.EndsWith("(Instance)") && Regex.IsMatch(avatar.name, @".*\(.*\)")))
                    {
                        originAvatars.Add(avatar.name.Replace("(Instance)", ""), avatar);
                    }
                }

                foreach (GameObject obj in Resources.FindObjectsOfTypeAll <GameObject>())
                {
                    if (!(obj.name.StartsWith("FX ") || obj.name.StartsWith("fx")))
                    {
                        continue;
                    }

                    if (!obj.name.Equals(string.Empty) && !originFXs.ContainsKey(obj.name.Replace("(Instance)", "")) &&
                        !(!obj.name.EndsWith("(Instance)") && Regex.IsMatch(obj.name, @".*\(.*\)")))
                    {
                        originFXs.Add(obj.name.Replace("(Instance)", ""), obj);
                    }
                }

                // Adds markers for world objects
                foreach (GadgetSiteModel obj in GameModel.AllGadgetSites().Values)
                {
                    obj.transform.gameObject.GetReadyForMarker(MarkerType.GadgetLocation, 4f);
                }

                foreach (KookadobaPatchNode node in Resources.FindObjectsOfTypeAll <KookadobaPatchNode>())
                {
                    foreach (GameObject child in node.gameObject.FindChildrenWithPartialName("SpawnJoint"))
                    {
                        child.GetReadyForMarker(MarkerType.SpawnPoint);
                    }
                }

                GardenObjects.LatePopulate();
                TheWildsObjects.LatePopulate();
                RanchObjects.LatePopulate();
                EffectObjects.LatePopulate();

                populated = true;
            }
        }