Exemple #1
0
        static void Main(string[] args)
        {
            Globals.NativeNamespace  = "Ogre";
            Globals.ManagedNamespace = "Mogre";

            MetaDefinition meta = new MetaDefinition(@"..\..\..\cpp2java\build\meta.xml", "Mogre");

            meta.AddAttributes(@"..\..\Attributes.xml");

            //check if auto directories exists, and create it if needed
            if (!Directory.Exists(@"..\..\..\..\Main\include\auto"))
            {
                Directory.CreateDirectory(@"..\..\..\..\Main\include\auto");
            }

            if (!Directory.Exists(@"..\..\..\..\Main\src\auto"))
            {
                Directory.CreateDirectory(@"..\..\..\..\Main\src\auto");
            }


            Wrapper wrapper = new Wrapper(meta, @"..\..\..\..\Main\include\auto", @"..\..\..\..\Main\src\auto", "Mogre", "Ogre");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(wrapper));
        }
Exemple #2
0
        void CompileMetaPropertyDefinitions(AstMetaProperty ast, MetaProperty mp)
        {
            var defs = new MetaDefinition[ast.Definitions.Count];

            for (int i = 0; i < defs.Length; i++)
            {
                var fc = new FunctionCompiler(_compiler, mp);

                foreach (var req in ast.Definitions[i].Requirements)
                {
                    DataType dt = null;

                    if (req.Type != null)
                    {
                        dt = _resolver.GetType(mp.Parent, req.Type);
                    }

                    fc.AddReqStatement(new ReqProperty(req.Source, req.Name.Symbol, dt, req.Offset, req.Tag));
                }

                var       fixedInit = ast.Definitions[i].Value as AstFixedArrayInitializer;
                Statement s;

                if (fixedInit != null)
                {
                    s = fc.CompileFixedArrayDeclaration(mp.Source, mp.ReturnType, mp.Name, fixedInit);
                }
                else
                {
                    s = fc.CompileStatement(ast.Definitions[i].Value);

                    if (s is Expression)
                    {
                        s = fc.CompileImplicitCast(mp.Source, mp.ReturnType, s as Expression);
                    }
                }

                // Find implicit req statements
                if (s is Expression)
                {
                    var e = s as Expression;
                    new ReqStatementFinder(fc).VisitNullable(ref e);
                }
                else
                {
                    new ReqStatementFinder(fc).VisitNullable(ref s);
                }

                defs[i] = new MetaDefinition(s, ast.Definitions[i].Tags, fc.ReqStatements);
            }

            mp.SetDefinitions(defs);
        }
Exemple #3
0
        public override void Import(ImportFile file)
        {
            MetaDefinition meta     = null;
            var            yamlPath = Path.ChangeExtension(file.Filename, ".yaml");

            if (File.Exists(yamlPath))
            {
                using (var yamlStream = File.OpenRead(yamlPath))
                    using (var yamlReader = new StreamReader(yamlStream))
                    {
                        meta = (new YamlDotNet.Serialization.Deserializer()).Deserialize <MetaDefinition>(yamlReader);
                    }
            }

            var border = Thickness.Empty;

            if (meta != null && meta.Image != null)
            {
                border = Thickness.Parse(meta.Image.Border);
            }

            if (meta != null && meta.ImageAtlas != null)
            {
                var targetPath = Path.ChangeExtension(file.TargetFilename, null);

                // Create a directory with the same name as the resource
                Directory.CreateDirectory(targetPath);

                for (var i = 0; i < meta.ImageAtlas.Images.Length; i++)
                {
                    using (var sourceFile = File.OpenRead(file.Filename))
                        using (var targetWriter = new ResourceWriter(File.OpenWrite($"{targetPath}/{meta.ImageAtlas.Images[i].Name}.resource"), typeof(Image)))
                            Import(sourceFile, targetWriter, border,
                                   new SixLabors.Primitives.Rectangle(
                                       meta.ImageAtlas.Images[i].Rect.x,
                                       meta.ImageAtlas.Images[i].Rect.y,
                                       meta.ImageAtlas.Images[i].Rect.w,
                                       meta.ImageAtlas.Images[i].Rect.h));

                    // TODO: write the atlas out as a resource
                }
            }
            else
            {
                using (var sourceFile = File.OpenRead(file.Filename))
                    using (var targetWriter = new ResourceWriter(File.OpenWrite(file.TargetFilename), typeof(NoZ.Image)))
                        Import(sourceFile, targetWriter, border, SixLabors.Primitives.Rectangle.Empty);
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            Globals.NativeNamespace  = "Ogre";
            Globals.ManagedNamespace = "Mogre";

            MetaDefinition meta = new MetaDefinition(@"..\..\..\cpp2java\build\meta.xml", "Mogre");

            meta.AddAttributes(@"..\..\Attributes.xml");

            Wrapper wrapper = new Wrapper(meta, @"..\..\..\Mogre\include\auto", @"..\..\..\Mogre\src\auto", "Mogre", "Ogre");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(wrapper));
        }
Exemple #5
0
        public Form1()
        {
            InitializeComponent();

            Globals.NativeNamespace  = "OIS";
            Globals.ManagedNamespace = "MOIS";

            MetaDefinition meta = new MetaDefinition("../../../cpp2java/build/meta.xml", "MOIS");

            meta.AddAttributes("../../Attributes.xml");

            _wrapper = new Wrapper(meta, "../../../../include/auto", "../../../../src/auto", "MOIS", "OIS");

            for (int i = 0; i < _wrapper.IncludeFiles.Count; i++)
            {
                lstTypes.Items.Add(_wrapper.IncludeFiles.Keys[i]);
            }
        }
Exemple #6
0
        protected override void OnLoad(EventArgs onloadEvent)
        {
            base.OnLoad(onloadEvent);
#if EDNConCompDirDNN62
            ModuleInfo moduleInfo = ModuleControl.ModuleContext.Configuration;
#else
            ModuleInfo moduleInfo = DotNetNuke.UI.Containers.Container.GetPortalModuleBase(this).ModuleConfiguration;
#endif

            if (moduleInfo.IsDeleted)
            {
                return;
            }

            UserInfo user = (UserInfo)Context.Items["UserInfo"];

            MetaDefinition meta = MetaDefinition.MetaFromFolder(
                Server.MapPath(moduleInfo.ContainerPath) + "StyleWizard\\",
                true,
                (user != null && (user.IsSuperUser || user.IsInRole(PortalSettings.AdministratorRoleName)))
                );

            if
            (
                meta == null ||
                String.IsNullOrEmpty(moduleInfo.ContainerSrc) ||
                !moduleInfo.ContainerSrc.Contains("/") ||
                String.IsNullOrEmpty(moduleInfo.ContainerPath)
            )
            {
                return;
            }

            string containerFilename = moduleInfo.ContainerSrc.Substring(moduleInfo.ContainerSrc.LastIndexOf('/') + 1),
                   containerTheme    = moduleInfo.ContainerPath.Remove(moduleInfo.ContainerPath.Length - 1);

            if (!containerTheme.Contains("/"))
            {
                return;
            }

            string containerPortalFolderName = containerTheme.Remove(containerTheme.LastIndexOf('/'));

            if (!containerPortalFolderName.Contains("/"))
            {
                return;
            }

            containerPortalFolderName = containerPortalFolderName.Remove(containerPortalFolderName.LastIndexOf('/'));
            containerPortalFolderName = containerPortalFolderName.Substring(containerPortalFolderName.LastIndexOf('/') + 1);

            containerTheme = containerTheme.Substring(containerTheme.LastIndexOf('/') + 1);

            if (containerFilename.Contains("."))
            {
                containerFilename = containerFilename.Remove(containerFilename.IndexOf('.'));
            }

            ActiveStyle activeStyle = meta.GetActiveStyle(PortalSettings.PortalId, containerFilename);

            if (String.IsNullOrEmpty(templateGroup))
            {
                templateGroup = "default";
            }

            containerClass.Text = String.Concat(
                "eds_containers_", containerTheme,
                " eds_templateGroup_", templateGroup,
                " eds_template_", containerFilename,
                (activeStyle.type != "predefined" || activeStyle.id != "default" ? " eds_style_" + activeStyle.type + "_" + activeStyle.id : "")
                );

            string containerDirectoryPath = Server.MapPath(moduleInfo.ContainerPath);

            Control cssPageControl = Page.FindControl("CSS");

            if (cssPageControl == null || Page.Header.FindControl(ID) != null)
            {
                return;
            }

            AdditionalObjectResources themeObjectResources = meta.GetAdditionalObjectResources(
                PortalSettings.PortalId.ToString(),
                containerFilename,
                "eds_skin_" + containerTheme,
                moduleInfo.ContainerPath + meta.assetsClientPath
                );

            foreach (HtmlLink linkControl in themeObjectResources.css)
            {
                if (Page.Header.FindControl(linkControl.ID) == null)
                {
                    cssPageControl.Controls.Add(linkControl);
                }
            }

            if (!File.Exists(containerDirectoryPath + "StyleWizard\\developerMode") && File.Exists(containerDirectoryPath + "container.css"))
            {
                return;
            }

            new ContainerController(
                containerTheme,
                containerPortalFolderName,
                PortalSettings.HomeDirectoryMapPath,
                PortalSettings.HomeDirectory,
                PortalSettings,
                user
                )
            .rebuildCss();

            cssPageControl.Controls.Add(Utility.CreateCssLinkControl(
                                            containerPortalFolderName + "_" + containerTheme + "_containers",
                                            moduleInfo.ContainerPath + "container.css"
                                            ));
        }
Exemple #7
0
        public static MToonMaterial MToonFromGltf(glTFMaterial material, List <Texture> textures, VRMC_materials_mtoon extension)
        {
            var mtoon = new MToonMaterial(material.name);

            var Meta = new MetaDefinition
            {
                Implementation = "Santarh/MToon",
            };
            var Color = new ColorDefinition
            {
                LitColor             = material.pbrMetallicRoughness.baseColorFactor.ToLinearColor(Nan),
                LitMultiplyTexture   = material.pbrMetallicRoughness.baseColorTexture?.index.GetTexture(textures),
                ShadeColor           = extension.ShadeFactor.ToLinearColor(Nan),
                ShadeMultiplyTexture = extension.ShadeMultiplyTexture.GetTexture(textures),
                CutoutThresholdValue = material.alphaCutoff,
            };
            var Outline = new OutlineDefinition
            {
                OutlineColorMode              = (VrmLib.MToon.OutlineColorMode)extension.OutlineColorMode,
                OutlineColor                  = extension.OutlineFactor.ToLinearColor(Nan),
                OutlineLightingMixValue       = extension.OutlineLightingMixFactor.Value,
                OutlineScaledMaxDistanceValue = extension.OutlineScaledMaxDistanceFactor.Value,
                OutlineWidthMode              = (VrmLib.MToon.OutlineWidthMode)extension.OutlineWidthMode,
                OutlineWidthValue             = extension.OutlineWidthFactor.Value,
                OutlineWidthMultiplyTexture   = extension.OutlineWidthMultiplyTexture.GetTexture(textures),
            };
            var Emission = new EmissionDefinition
            {
                EmissionColor = material.emissiveFactor.ToLinearColor(Nan),
            };

            if (material.emissiveTexture != null)
            {
                Emission.EmissionMultiplyTexture = material.emissiveTexture.index.GetTexture(textures);
            }

            var Lighting = new LightingDefinition
            {
                LightingInfluence = new LightingInfluenceDefinition
                {
                    GiIntensityValue           = extension.GiIntensityFactor.Value,
                    LightColorAttenuationValue = extension.LightColorAttenuationFactor.Value,
                },
                LitAndShadeMixing = new LitAndShadeMixingDefinition
                {
                    ShadingShiftValue = extension.ShadingShiftFactor.Value,
                    ShadingToonyValue = extension.ShadingToonyFactor.Value,
                },
                Normal = new NormalDefinition
                {
                },
            };

            if (material.normalTexture != null)
            {
                Lighting.Normal.NormalScaleValue = material.normalTexture.scale;
                Lighting.Normal.NormalTexture    = material.normalTexture.index.GetTexture(textures);
            }

            var MatCap = new MatCapDefinition
            {
                AdditiveTexture = extension.AdditiveTexture.GetTexture(textures)
            };
            var Rendering = new RenderingDefinition
            {
                CullMode   = material.doubleSided ? CullMode.Off : CullMode.Back,
                RenderMode = GetRenderMode(material.alphaMode, extension.TransparentWithZWrite.Value),
                RenderQueueOffsetNumber = extension.RenderQueueOffsetNumber.Value,
            };
            var Rim = new RimDefinition
            {
                RimColor             = extension.RimFactor.ToLinearColor(Nan),
                RimMultiplyTexture   = extension.RimMultiplyTexture.GetTexture(textures),
                RimLiftValue         = extension.RimLiftFactor.Value,
                RimFresnelPowerValue = extension.RimFresnelPowerFactor.Value,
                RimLightingMixValue  = extension.RimLightingMixFactor.Value,
            };

            var TextureOption = new TextureUvCoordsDefinition
            {
                UvAnimationMaskTexture        = extension.UvAnimationMaskTexture.GetTexture(textures),
                UvAnimationRotationSpeedValue = extension.UvAnimationRotationSpeedFactor.Value,
                UvAnimationScrollXSpeedValue  = extension.UvAnimationScrollXSpeedFactor.Value,
                UvAnimationScrollYSpeedValue  = extension.UvAnimationScrollYSpeedFactor.Value,
            };

            if (glTF_KHR_texture_transform.TryGet(material.pbrMetallicRoughness.baseColorTexture, out glTF_KHR_texture_transform t))
            {
                TextureOption.MainTextureLeftBottomOriginOffset = t.offset.ToVector2();
                TextureOption.MainTextureLeftBottomOriginScale  = t.scale.ToVector2();
            }

            mtoon.Definition = new MToonDefinition
            {
                Meta          = Meta,
                Color         = Color,
                Outline       = Outline,
                Emission      = Emission,
                Lighting      = Lighting,
                MatCap        = MatCap,
                Rendering     = Rendering,
                Rim           = Rim,
                TextureOption = TextureOption,
            };

            return(mtoon);
        }
Exemple #8
0
        bool IsDefinitionValid(MetaLocation loc, MetaDefinition def)
        {
            foreach (var req in def.Requirements)
            {
                switch (req.Type)
                {
                case ReqStatementType.File:
                {
                    if (File.Exists((req as ReqFile).Filename))
                    {
                        continue;
                    }

                    Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                    return(false);
                }

                case ReqStatementType.Object:
                {
                    var obj = TryGetObject(loc);
                    var dt  = (req as ReqObject).ObjectType;

                    if (obj != null && obj.ReturnType.IsSubclassOfOrEqual(dt))
                    {
                        continue;
                    }

                    Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                    return(false);
                }

                case ReqStatementType.Property:
                {
                    var rmp = req as ReqProperty;

                    var rloc = TryGetLocation(loc, rmp.PropertyName, rmp.Offset);
                    if (rloc == null)
                    {
                        Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                        return(false);
                    }

                    var rdt = GetProperty(rloc.Value).ReturnType;
                    if (rmp.PropertyType != null && !rmp.PropertyType.Equals(rdt))
                    {
                        Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                        return(false);
                    }

                    var rdef = GetValidDefinition(rloc.Value);
                    if (rdef == null || rmp.Tag != null && !rdef.Tags.Contains(rmp.Tag))
                    {
                        Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                        return(false);
                    }

                    continue;
                }
                }

                Path.FailedReqStatements.Add(Tuple.Create(loc, def, req));
                return(false);
            }

            return(true);
        }
Exemple #9
0
 protected MetaDefBasedClass(MetaDefinition metaDef)
 {
     MetaDef = metaDef;
 }
Exemple #10
0
        static void Main(string[] args)
        {
            if (!File.Exists(META_XML_FILE))
            {
                MessageBox.Show("The file \"Meta.xml\" doesn't exist. You need to run \"cpp2java\" to create it first.", "Error");
                return;
            }

            MetaDefinition meta = new MetaDefinition(META_XML_FILE, "Ogre", "Mogre",
                                                     new MogreConstructFactory(), new MogreCodeStyleDef());

            try
            {
                meta.AddAttributes(ATTRIBUTES_FILE);
            }
            catch (InvalidAttributeException e)
            {
                MessageBox.Show("Invalid attribute found: " + e.Message, "Error");
                return;
            }

            //check if auto directories exists, and create it if needed
            if (!Directory.Exists(INCLUDES_DEST_DIR))
            {
                Directory.CreateDirectory(INCLUDES_DEST_DIR);
            }

            if (!Directory.Exists(SRC_DEST_DIR))
            {
                Directory.CreateDirectory(SRC_DEST_DIR);
            }


            Wrapper wrapper = new Wrapper(meta, INCLUDES_DEST_DIR, SRC_DEST_DIR);

            if (args.Length > 0)
            {
                // Command line mode - parse arguments.
                if (args.Length == 1 && args[0] == "produce")
                {
                    wrapper.IncludeFileWrapped += delegate(object sender, IncludeFileWrapEventArgs e)
                    {
                        Console.WriteLine(e.IncludeFile);
                    };
                    wrapper.GenerateCodeFiles();
                }
                else
                {
                    Console.Write(
                        "Invalid command\n\n" +
                        "Usage: AutoWrap.exe <command>\n\n" +
                        "Supported Commands\n" +
                        "==================\n\n" +
                        "    produce    Produces Mogre auto-generated files (equivalent to pressing the \"Produce\" button in the GUI).\n" +
                        "\n"
                        );
                }
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new AutoWrap(wrapper));
            }
        }
 public override NamespaceDefinition CreateNamespace(MetaDefinition metaDef, XmlElement elem)
 {
     return(new MogreNamespaceDefinition(metaDef, elem));
 }
Exemple #12
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            string clientSkinPath = PortalSettings.ActiveTab.SkinSrc,
                   skinFile       = clientSkinPath.Substring(clientSkinPath.LastIndexOf('/') + 1);

            skinFile = skinFile.Remove(skinFile.IndexOf('.'));

            clientSkinPath = clientSkinPath.Remove(clientSkinPath.LastIndexOf('/') + 1);
            string themeName   = clientSkinPath.Remove(clientSkinPath.LastIndexOf('/')),
                   themePortal = themeName.Remove(themeName.LastIndexOf('/'));

            themeName = themeName.Substring(themeName.LastIndexOf('/') + 1);

            themePortal = themePortal.Remove(themePortal.LastIndexOf('/'));
            themePortal = themePortal.Substring(themePortal.LastIndexOf('/') + 1);

            Control cssPageControl = Page.FindControl("CSS");

            if (cssPageControl == null || Page.Header.FindControl(ID) != null)
            {
                return;
            }


            UserInfo user = (UserInfo)Context.Items["UserInfo"];

            MetaDefinition meta = MetaDefinition.MetaFromFolder(
                Server.MapPath(clientSkinPath) + "StyleWizard\\",
                true,
                (user != null && (user.IsSuperUser || user.IsInRole(PortalSettings.AdministratorRoleName)))
                );

            if (meta == null)
            {
                return;
            }

            AdditionalObjectResources themeObjectResources = meta.GetAdditionalObjectResources(
                PortalSettings.PortalId.ToString(),
                skinFile,
                "eds_skin_" + themeName,
                clientSkinPath + meta.assetsClientPath
                );

            foreach (HtmlLink linkControl in themeObjectResources.css)
            {
                if (Page.Header.FindControl(linkControl.ID) == null)
                {
                    cssPageControl.Controls.Add(linkControl);
                }
            }

            ActiveStyle activeStyle = meta.GetActiveStyle(PortalSettings.PortalId, skinFile);

            if (activeStyle.type == "predefined" && activeStyle.id == "default")
            {
                return;
            }

            string id = String.Concat(
                "skinStyleCss_",
                (themePortal == "_default" ? "" : themePortal + "_"),
                themeName,
                "_style_",
                activeStyle.type, "_", activeStyle.id
                );
            string href = String.Concat(
                clientSkinPath,
                meta.assetsClientPath,
                "css/",
                activeStyle.type,
                "/",
                activeStyle.id,
                ".css"
                );

            cssPageControl.Controls.Add(Utility.CreateCssLinkControl(id, href));
        }
        public static bool TryCreateParam(GltfData data, glTF_VRM_extensions vrm, int materialIdx,
                                          out MaterialDescriptor matDesc)
        {
            if (vrm?.materialProperties == null || vrm.materialProperties.Count == 0)
            {
                matDesc = default;
                return(false);
            }

            if (materialIdx < 0 || materialIdx >= vrm.materialProperties.Count)
            {
                matDesc = default;
                return(false);
            }

            var vrmMaterial = vrm.materialProperties[materialIdx];

            if (vrmMaterial.shader != UnlitTransparentZWriteShaderName)
            {
                matDesc = default;
                return(false);
            }

            // use material.name, because material name may renamed in GltfParser.
            var name = data.GLTF.materials[materialIdx].name;

            var textureSlots = new Dictionary <string, TextureDescriptor>();
            var floatValues  = new Dictionary <string, float>();
            var colors       = new Dictionary <string, Color>();
            var vectors      = new Dictionary <string, Vector4>();
            var actions      = new Collection <Action <Material> >();

            if (vrmMaterial.textureProperties.ContainsKey(UnlitTransparentZWriteMainTexturePropName))
            {
                if (VRMMToonTextureImporter.TryGetTextureFromMaterialProperty(data, vrmMaterial,
                                                                              UnlitTransparentZWriteMainTexturePropName, out var texture))
                {
                    textureSlots.Add(MToon.Utils.PropMainTex, texture.Item2);
                }
            }

            actions.Add(unityMaterial =>
            {
                var mainTexture = (Texture2D)unityMaterial.GetTexture(MToon.Utils.PropMainTex);

                // NOTE: Unlit のフォールバックなので
                // Lit/Shade 色は黒として、Alpha のために Lit にテクスチャを設定する.
                // Emissive 色は白として、テクスチャを設定する.
                // また、元のシェーダのうちユーザが設定できるプロパティは Texture のみ.
                MToon.Utils.SetMToonParametersToMaterial(unityMaterial, new MToonDefinition
                {
                    Meta = new MetaDefinition
                    {
                        Implementation = MToon.Utils.Implementation,
                        VersionNumber  = MToon.Utils.VersionNumber,
                    },
                    Rendering = new RenderingDefinition
                    {
                        // NOTE: Transparent ZWrite
                        RenderMode = RenderMode.TransparentWithZWrite,
                        CullMode   = CullMode.Back,
                        RenderQueueOffsetNumber = 0,
                    },
                    Color = new ColorDefinition
                    {
                        // NOTE: Unlit なので、RGB 値は黒とする。
                        // NOTE: Alpha は使うので、テクスチャを設定する.
                        LitColor             = new Color(0, 0, 0, 1),
                        LitMultiplyTexture   = mainTexture,
                        ShadeColor           = new Color(0, 0, 0, 1),
                        ShadeMultiplyTexture = default,
Exemple #14
0
 public MogreNamespaceDefinition(MetaDefinition metaDef, XmlElement elem) : base(metaDef, elem)
 {
 }