示例#1
0
        private static void AcceptModule(IDictionary <string, object> dictionary, IRegistry registry)
        {
            var moduleId   = ParseId(GetValue(dictionary, "Id"));
            var moduleName = GetValue <string>(dictionary, "Name");

            var module = registry.CreateModule(moduleId, moduleName);

            ParseRegistryObjectBase(module, dictionary);

            if (dictionary.ContainsKey("Namespace"))
            {
                module.Namespace = GetValue <string>(dictionary, "Namespace");
            }
            module.Options = (UTinyModuleOptions)ParseInt(GetValue(dictionary, "Options"));

            IList <object> dependenciesList;

            if (TryGetValue(dictionary, "Dependencies", out dependenciesList))
            {
                foreach (var obj in dependenciesList)
                {
                    module.AddExplicitModuleDependency(ParseModuleReference(obj));
                }
            }

            IList <object> componentsList;

            if (TryGetValue(dictionary, "Components", out componentsList))
            {
                foreach (var obj in componentsList)
                {
                    module.AddComponentReference(ParseTypeReference(obj));
                }
            }

            IList <object> structsList;

            if (TryGetValue(dictionary, "Structs", out structsList))
            {
                foreach (var obj in structsList)
                {
                    module.AddStructReference(ParseTypeReference(obj));
                }
            }

            IList <object> enumsList;

            if (TryGetValue(dictionary, "Enums", out enumsList))
            {
                foreach (var obj in enumsList)
                {
                    module.AddEnumReference(ParseTypeReference(obj));
                }
            }

            IList <object> configurationsList;

            if (TryGetValue(dictionary, "Configurations", out configurationsList))
            {
                foreach (var obj in configurationsList)
                {
                    module.AddConfigurationReference(ParseTypeReference(obj));
                }
            }

            IList <object> entityGroupList;

            if (TryGetValue(dictionary, "EntityGroups", out entityGroupList))
            {
                foreach (var obj in entityGroupList)
                {
                    module.AddEntityGroupReference(ParseSceneReference(obj));
                }
            }
            // @LEGACY Backwards compat
            if (TryGetValue(dictionary, "Scenes", out entityGroupList))
            {
                foreach (var obj in entityGroupList)
                {
                    module.AddEntityGroupReference(ParseSceneReference(obj));
                }
            }

            IList <object> scriptsList;

            if (TryGetValue(dictionary, "Scripts", out scriptsList))
            {
                foreach (var obj in scriptsList)
                {
                    module.AddScriptReference(ParseScriptReference(obj));
                }
            }

            IList <object> systemsList;

            if (TryGetValue(dictionary, "Systems", out systemsList))
            {
                foreach (var obj in systemsList)
                {
                    module.AddSystemReference(ParseSystemReference(obj));
                }
            }

            IList <object> assetsList;

            if (TryGetValue(dictionary, "Assets", out assetsList))
            {
                foreach (var obj in assetsList)
                {
                    // Auto migrate existing explicit asset references
                    if (IsUnityObject(obj))
                    {
                        var unityObject = ParseUnityObject(obj);

                        if (null == unityObject)
                        {
                            continue;
                        }

                        module.AddAsset(unityObject);
                    }
                    else
                    {
                        var assetDictionary = obj as IDictionary <string, object>;

                        if (null != assetDictionary)
                        {
                            var unityObject = ParseUnityObject(GetValue(assetDictionary, "Object"));

                            if (null == unityObject)
                            {
                                continue;
                            }

                            var asset = module.AddAsset(unityObject);

                            asset.Name = GetValue(assetDictionary, "Name") as string;

                            if (!assetDictionary.ContainsKey("ExportSettings"))
                            {
                                continue;
                            }

                            // @TODO Determine the asset type even if the asset does not exist!
                            if (null != asset.Object)
                            {
                                var exportSettingsDictionary = GetValue(assetDictionary, "ExportSettings") as IDictionary <string, object>;

                                if (null != exportSettingsDictionary && exportSettingsDictionary.Count > 0)
                                {
                                    var type = asset.Object.GetType();
                                    if (typeof(Texture2D).IsAssignableFrom(type))
                                    {
                                        var exportSettings = asset.CreateExportSettings <UTinyTextureSettings>();
                                        ParseTextureSettings(exportSettings, exportSettingsDictionary);
                                    }
                                    else if (typeof(AudioClip).IsAssignableFrom(type))
                                    {
                                        var exportSettings = asset.CreateExportSettings <UTinyAudioClipSettings>();
                                        ParseBaseAssetExportSettings(exportSettings, exportSettingsDictionary);
                                    }
                                    else
                                    {
                                        var exportSettings = asset.CreateExportSettings <UTinyGenericAssetExportSettings>();
                                        ParseBaseAssetExportSettings(exportSettings, exportSettingsDictionary);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            // @LEGACY migrate legacy format
            IList <object> textureSettingsList;

            if (TryGetValue(dictionary, "TextureSettings", out textureSettingsList))
            {
                foreach (IDictionary <string, object> textureSettingsDictionary in textureSettingsList)
                {
                    var unityObject    = ParseUnityObject(GetValue(textureSettingsDictionary, "Texture")) as Texture2D;
                    var asset          = module.GetAsset(unityObject) ?? module.AddAsset(unityObject);
                    var exportSettings = asset.CreateExportSettings <UTinyTextureSettings>();
                    ParseTextureSettings(exportSettings, GetValue(textureSettingsDictionary, "Format"));
                }
            }

            module.StartupEntityGroup = ParseSceneReference(GetValue(dictionary, "StartupEntityGroup"));

            // @TEMP Backwards compat
            if (module.StartupEntityGroup.Equals(UTinyEntityGroup.Reference.None))
            {
                module.StartupEntityGroup = ParseSceneReference(GetValue(dictionary, "StartupScene"));
            }
        }
示例#2
0
 public void SetUp()
 {
     m_Registry = new UTinyRegistry();
     m_Module   = m_Registry.CreateModule(UTinyId.New(), "TestModule");
 }