コード例 #1
0
        public override void Apply(Data.ParametersBase parameters)
        {
            Effect.Normal = this.Normal;
            Effect.Mask   = this.Mask;

            Effect.CustomizeParameters = parameters.GetValueOrDefault(Data.CustomizeParameters.CustomizeParametersKey, Data.CustomizeParameters.Default);
        }
コード例 #2
0
 public override void Apply(Data.ParametersBase parameters)
 {
     Effect.ColorMap0      = this.ColorMap0;
     Effect.SpecularMap0   = this.SpecularMap0;
     Effect.NormalMap0     = this.NormalMap0;
     Effect.EnvironmentMap = this.EnvironmentMap;
 }
コード例 #3
0
 public override void Apply(Data.ParametersBase parameters)
 {
     Effect.ColorMap0    = this.ColorMap0;
     Effect.SpecularMap0 = this.SpecularMap0;
     Effect.NormalMap0   = this.NormalMap0;
     Effect.Color        = parameters.GetValueOrDefault(ColorParameterKey, DefaultColor);
 }
コード例 #4
0
 public override void Apply(Data.ParametersBase parameters)
 {
     Effect.Diffuse  = this.Diffuse;
     Effect.Specular = this.Specular;
     Effect.Normal   = this.Normal;
     Effect.Mask     = this.Mask;
     Effect.Table    = this.Table;
 }
コード例 #5
0
 public override void Apply(Data.ParametersBase parameters)
 {
     Effect.Diffuse0  = this.Diffuse0;
     Effect.Specular0 = this.Specular0;
     Effect.Normal0   = this.Normal0;
     Effect.Diffuse1  = this.Diffuse1;
     Effect.Specular1 = this.Specular1;
     Effect.Normal1   = this.Normal1;
 }
コード例 #6
0
        public ContentSgb(Engine engine, Sgb.SgbFile sgbFile, Data.ParametersBase parameters) : base(engine)
        {
            this.SgbFile        = sgbFile;
            this.Parameters     = parameters;
            this.Transformation = Matrix.Identity;

            foreach (var group in sgbFile.Data.OfType <Sgb.SgbGroup>())
            {
                foreach (var mdl in group.Entries.OfType <Sgb.SgbModelEntry>())
                {
                    _Content.Add(new ContentModel(engine, mdl.Model)
                    {
                        Parameters = parameters
                    });
                }
            }
        }
コード例 #7
0
        public ContentSgb(Engine engine, Sgb.SgbFile sgbFile, Data.ParametersBase parameters) : base(engine)
        {
            this.SgbFile        = sgbFile;
            this.Parameters     = parameters;
            this.Transformation = Matrix.Identity;

            // todo: fixme!

            bool LoadModels(Sgb.SgbFile file, Matrix rootTransform, Matrix gimTransform)
            {
                if (file == null)
                {
                    return(false);
                }

                foreach (var group in file.Data.OfType <Sgb.SgbGroup>())
                {
                    foreach (var mdl in group.Entries.OfType <Sgb.SgbModelEntry>())
                    {
                        var content = new ContentModel(engine, mdl.Model)
                        {
                            Parameters = parameters
                        };
                        content.Transformation = content.Transformation * gimTransform * rootTransform;
                        _Content.Add(content);
                    }
                }
                return(true);
            }

            Matrix CreateMatrix(Vector3 translation, Vector3 rotation, Vector3 scale)
            {
                return(Matrix.Scaling(scale.ToDx())
                       * Matrix.RotationX(rotation.X)
                       * Matrix.RotationY(rotation.Y)
                       * Matrix.RotationZ(rotation.Z)
                       * Matrix.Translation(translation.ToDx()));
            }

            void LoadSgbFile(Sgb.SgbFile file)
            {
                if (LoadModels(file, Matrix.Identity, Matrix.Identity))
                {
                    foreach (var rootGimGroup in file.Data.OfType <Sgb.SgbGroup>())
                    {
                        foreach (var rootGimEntry in rootGimGroup.Entries.OfType <Sgb.SgbGimmickEntry>())
                        {
                            var rootGimTransform = CreateMatrix(rootGimEntry.Header.Translation, rootGimEntry.Header.Rotation, rootGimEntry.Header.Scale);
                            if (LoadModels(rootGimEntry.Gimmick, rootGimTransform, Matrix.Identity))
                            {
                                foreach (var subGimGroup in rootGimEntry.Gimmick.Data.OfType <Sgb.SgbGroup>())
                                {
                                    foreach (var subGim in subGimGroup.Entries.OfType <Sgb.SgbGimmickEntry>())
                                    {
                                        var subGimTransform = CreateMatrix(subGim.Header.Translation, subGim.Header.Rotation, subGim.Header.Scale);
                                        LoadModels(subGim.Gimmick, rootGimTransform, subGimTransform);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            LoadSgbFile(sgbFile);
        }
コード例 #8
0
 public ContentSgb(Engine engine, Sgb.SgbFile sgbFile, Data.ParametersBase parameters) : this(engine, sgbFile, parameters, Matrix.Identity)
 {
 }
コード例 #9
0
 public abstract void Apply(Data.ParametersBase parameters);