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)); }
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); }
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); } }
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)); }
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]); } }
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" )); }
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); }
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); }
protected MetaDefBasedClass(MetaDefinition metaDef) { MetaDef = metaDef; }
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)); }
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,
public MogreNamespaceDefinition(MetaDefinition metaDef, XmlElement elem) : base(metaDef, elem) { }