示例#1
0
            protected override void Load()
            {
                if (Owner.LoadedBlock == null)
                {
                    var settingsFileName = Owner.Name + ".settings";
                    if (VirtualFile.Exists(settingsFileName))
                    {
                        //!!!!check errors
                        var block = TextBlockUtility.LoadFromVirtualFile(settingsFileName);

                        Owner.LoadedBlock = block;
                    }
                    else
                    {
                        //!!!!так?

                        var block = new TextBlock();
                        var child = block.AddChild(".component", MetadataManager.GetTypeOfNetType(typeof(Component_Font)).Name);

                        //default configuration
                        var b1 = child.AddChild("CharacterRanges");
                        var b2 = b1.AddChild("Value");
                        b2.SetAttribute("Count", "2");
                        b2.SetAttribute("0", "32 127");
                        b2.SetAttribute("1", "160 191");

                        Owner.LoadedBlock = block;
                    }
                }

                base.Load();
            }
示例#2
0
        bool InitInternal(string language, bool localizeEngine)
        {
            this.language       = language;
            this.localizeEngine = localizeEngine;

            //alternative loader
            TextBlock rootBlock = null;
            bool      error2    = false;

            if (AlternativeLanguageFileLoaderHandler != null)
            {
                AlternativeLanguageFileLoaderHandler(ref rootBlock, ref error2);
            }
            if (error2)
            {
                return(false);
            }

            //default loader
            if (rootBlock == null)
            {
                //!!!!локализация дополнений
                //!!!!!еще можно изменить Engine.language. сделать уровни видать.

                //!!!!!!
                string fileName = Path.Combine(Path.Combine(LanguagesDirectory, language), "Engine.language");
                if (VirtualFile.Exists(fileName))
                {
                    string error;
                    rootBlock = TextBlockUtility.LoadFromVirtualFile(fileName, out error);
                    if (rootBlock == null)
                    {
                        Log.Fatal("Parsing file failed \"{0}\" ({1}).", fileName, error);
                        return(false);
                    }
                }
            }

            if (rootBlock != null)
            {
                ParseLanguageTextBlock(rootBlock);
            }

            return(true);
        }
        public static string GetParameter(string virtualTextureFileName, string parameterName, out string error)
        {
            string fileName = virtualTextureFileName + ".settings";

            if (!VirtualFile.Exists(fileName))
            {
                error = "";
                return("");
            }

            var block = TextBlockUtility.LoadFromVirtualFile(fileName, out error);

            if (block == null)
            {
                return("");
            }

            error = "";
            return(block.GetAttribute(parameterName));
        }
示例#4
0
            protected override void Load()
            {
                if (Owner.LoadedBlock == null)
                {
                    var settingsFileName = Owner.Name + ".settings";
                    if (VirtualFile.Exists(settingsFileName))
                    {
                        var block = TextBlockUtility.LoadFromVirtualFile(settingsFileName);
                        Owner.LoadedBlock = block;
                    }
                    else
                    {
                        var block = new TextBlock();
                        var child = block.AddChild(".component", MetadataManager.GetTypeOfNetType(typeof(Component_Import3D)).Name);

                        Owner.LoadedBlock = block;
                    }
                }

                base.Load();
            }
示例#5
0
        static void ReadCachedInfoFile(string destFileNameBase, out string sourceFileHash, out int sourceFileSize)          //, out PixelFormat sourceFileFormat )
        {
            sourceFileHash = "";
            sourceFileSize = 0;
            //sourceFileFormat = PixelFormat.Unknown;

            GetDestFileNames(destFileNameBase, out var infoFileName, out var envFileName, out var irrFileName);

            if (VirtualFile.Exists(envFileName) && VirtualFile.Exists(irrFileName))
            {
                var block = TextBlockUtility.LoadFromVirtualFile(infoFileName, out _);
                if (block != null)
                {
                    try
                    {
                        sourceFileHash = block.GetAttribute("SourceFileHash");
                        sourceFileSize = int.Parse(block.GetAttribute("SourceFileSize"));
                        //sourceFileFormat = (PixelFormat)Enum.Parse( typeof( PixelFormat ), block.GetAttribute( "SourceFileFormat" ) );
                    }
                    catch { }
                }
            }
        }
        public static bool SetParameter(string virtualTextureFileName, string parameterName, string parameterValue, out string error)
        {
            string fileName = virtualTextureFileName + ".settings";

            if (!VirtualFile.Exists(fileName) && string.IsNullOrEmpty(parameterValue))
            {
                //no sense to update
                error = "";
                return(true);
            }

            TextBlock block = null;

            if (VirtualFile.Exists(fileName))
            {
                block = TextBlockUtility.LoadFromVirtualFile(fileName, out error);
                if (block == null)
                {
                    return(false);
                }
            }
            else
            {
                block = new TextBlock();
            }

            if (!string.IsNullOrEmpty(parameterValue))
            {
                block.SetAttribute(parameterName, parameterValue);
            }
            else
            {
                block.DeleteAttribute(parameterName);
            }

            if (block.Children.Count != 0 || block.Attributes.Count != 0)
            {
                if (!TextBlockUtility.SaveToVirtualFile(block, fileName, out error))
                {
                    return(false);
                }
            }
            else
            {
                if (VirtualFile.Exists(fileName))
                {
                    try
                    {
                        File.Delete(VirtualPathUtility.GetRealPathByVirtual(fileName));
                    }
                    catch (Exception e)
                    {
                        error = e.Message;
                        return(false);
                    }
                }
            }

            error = "";
            return(true);
        }
示例#7
0
            protected virtual void Load()
            {
                //override behavior by event
                if (ResultObject == null)
                {
                    bool handled = false;
                    LoadOverride?.Invoke(this, ref handled);
                    if (handled)
                    {
                        return;
                    }
                }

                //default behavior
                if (ResultObject == null)
                {
                    //load block
                    if (Owner.LoadedBlock == null)
                    {
                        string error;
                        Owner.LoadedBlock = TextBlockUtility.LoadFromVirtualFile(Owner.Name, out error);
                        if (Owner.LoadedBlock == null)
                        {
                            //!!!!
                            // comment this fatal !
                            //Log.Fatal( error );

                            //TODO: also we can use exceptions!
                            //throw new Exception( error );

                            StatusError = error;
                            Status      = StatusEnum.Error;

                            return;
                        }
                    }

                    //parse text block
                    string error2;
                    var    component = ComponentUtility.LoadComponentFromTextBlock(null, Owner.LoadedBlock, Owner.Name, this, componentSetEnabled,
                                                                                   componentCreateHierarchyController, out error2);
                    //var component = ComponentUtils.LoadComponentFromTextBlock( Owner.LoadedBlock, Owner.Name, null, out error2 );
                    if (component == null)
                    {
                        ////!!!!!!!
                        //Log.Fatal( "impl" );
                        //!!!!!
                        StatusError = error2;
                        Status      = StatusEnum.Error;
                        return;
                    }

                    //!!!!

                    //if( componentSetEnabled != null )
                    //	component.Enabled = componentSetEnabled.Value;

                    //xx xx;
                    //xx xx;//сначала выключить иерархию? потом всем разом включится?

                    ////!!!!возможно это раньше нужно делать, т.к. в GetProvidedType() что-то там надо
                    //if( componentCreateHierarchyController )
                    //	ComponentUtils.CreateHierarchyControllerForRootComponent( component, this, true );//, true );

                    //resource is ready
                    //ResultObject = component;
                    Status = StatusEnum.Ready;
                }
            }