public Managed Parse(TextParser parser, string defaultName) { AnimSkin skin = this.context.Resolve<AnimSkin>(); skin.Name = defaultName; parser.Consume("CIwAnimSkin"); parser.Consume("{"); for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "name") { parser.Consume(); skin.Name = parser.ConsumeString(); continue; } if (attribute == "skeleton") { parser.Consume(); parser.ConsumeResourceReference(skin.Skeleton); continue; } if (attribute == "model") { parser.Consume(); parser.ConsumeResourceReference(skin.SkeletonModel); continue; } if (attribute == "CIwAnimSkinSet") { parser.Consume(); ParseAnimSkinSet(parser, skin); continue; } parser.UnknownLexemError(); } return skin; }
public Managed Parse(TextParser parser, string defaultName) { Anim mesh = this.context.Resolve<Anim>(); mesh.Name = defaultName; parser.Consume("CIwAnim"); parser.Consume("{"); for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "name") { parser.Consume(); mesh.Name = parser.ConsumeString(); continue; } if (attribute == "skeleton") { parser.Consume(); parser.ConsumeResourceReference(mesh.Skeleton); continue; } if (attribute == "CIwAnimKeyFrame") { this.ParseKeyFrame(parser, mesh); continue; } parser.UnknownLexemError(); } return mesh; }
private Surface ParseSurface(TextParser parser, Mesh mesh) { parser.Consume("CSurface"); parser.Consume("{"); var surface = this.context.Resolve<ModelBlockPrimBase>(); surface.Mesh = mesh; for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "material") { parser.Consume(); parser.ConsumeResourceReference(surface.Material); continue; } if (attribute == "CTris") { parser.Consume(); parser.Consume("{"); this.ParseTris(parser, surface); continue; } if (attribute == "CQuads") { parser.Consume(); parser.Consume("{"); this.ParseQuads(parser, surface); continue; } parser.UnknownLexemError(); } return surface; }
//public IList<Material> Load(Stream stream) //{ // IList<Material> materials = new List<Material>(); // using (var source = new StreamReader(stream)) // { // var parser = new TextParser(source, Directory.GetCurrentDirectory()); // materials.Add((Material)this.Parse(parser, TODO)); // } // return materials; //} #region Public Methods and Operators public Managed Parse(TextParser parser, string defaultName) { Material material = this.context.Resolve<Material>(); material.Name = defaultName; material.BasePath = parser.BasePath; parser.Consume("CIwMaterial"); parser.Consume("{"); for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "name") { parser.Consume(); material.Name = parser.ConsumeString(); continue; } if (attribute == "celW") { parser.Consume(); this.EnsureAnim(material).CelW = parser.ConsumeByte(); continue; } if (attribute == "celH") { parser.Consume(); this.EnsureAnim(material).CelH = parser.ConsumeByte(); continue; } if (attribute == "celNumU") { parser.Consume(); this.EnsureAnim(material).CelNumU = parser.ConsumeByte(); continue; } if (attribute == "clampUV") { parser.Consume(); material.ClampUV = parser.ConsumeBool(); continue; } if (attribute == "specularPower") { parser.Consume(); material.SpecularPower = parser.ConsumeByte(); continue; } if (attribute == "celNum") { parser.Consume(); this.EnsureAnim(material).CelNum = parser.ConsumeByte(); continue; } if (attribute == "celPeriod") { parser.Consume(); this.EnsureAnim(material).CelPeriod = parser.ConsumeByte(); continue; } if (attribute == "zDepthOfs") { parser.Consume(); material.ZDepthOfs = parser.ConsumeShort(); continue; } if (attribute == "modulateMode") { parser.Consume(); material.ModulateMode = parser.ConsumeEnum<ModulateMode>(); continue; } if (attribute == "alphaMode") { parser.Consume(); material.AlphaMode = parser.ConsumeEnum<AlphaMode>(); continue; } if (attribute == "cullMode") { parser.Consume(); material.CullMode = parser.ConsumeEnum<CullMode>(); continue; } if (attribute == "colAmbient") { parser.Consume(); material.ColAmbient = parser.ConsumeColor(); continue; } if (attribute == "colEmissive") { parser.Consume(); material.ColEmissive = parser.ConsumeColor(); continue; } if (attribute == "colDiffuse") { parser.Consume(); material.ColDiffuse = parser.ConsumeColor(); continue; } if (attribute == "colSpecular") { parser.Consume(); material.ColSpecular = parser.ConsumeColor(); continue; } if (attribute == "noFog") { parser.Consume(); material.NoFog = parser.ConsumeBool(); continue; } if (attribute == "texture0" || attribute == "mapDiffuse") { parser.Consume(); parser.ConsumeResourceReference(material.Texture0, "textures"); continue; } if (attribute == "texture1") { parser.Consume(); parser.ConsumeResourceReference(material.Texture1, "textures"); continue; } if (attribute == "texture2") { parser.Consume(); parser.ConsumeResourceReference(material.Texture2, "textures"); continue; } if (attribute == "texture3") { parser.Consume(); parser.ConsumeResourceReference(material.Texture3, "textures"); continue; } if (attribute == "effectPreset") { parser.Consume(); material.EffectPreset = parser.ConsumeEnum<EffectPreset>(); continue; } if (attribute == "shadeMode") { parser.Consume(); material.ShadeMode = parser.ConsumeEnum<ShadeMode>(); continue; } if (attribute == "blendMode") { parser.Consume(); material.BlendMode = parser.ConsumeEnum<BlendMode>(); continue; } if (attribute == "shaderTechnique") { parser.Consume(); parser.ConsumeResourceReference(material.ShaderTechnique); continue; } if (attribute == "vertexShader") { parser.Consume(); material.VertexShader = parser.ConsumeString(); continue; } parser.UnknownLexemError(); } return material; }