Ejemplo n.º 1
0
        public static ResU.ShaderParamAnim Clr02Fshu(string FileName)
        {
            CLR0Node clr0 = NodeFactory.FromFile(null, FileName) as CLR0Node;

            ResU.ShaderParamAnim fshu = new ResU.ShaderParamAnim();
            fshu.FrameCount = clr0.FrameCount;
            fshu.Name       = clr0.Name;
            fshu.Path       = clr0.OriginalPath;
            fshu.UserData   = new ResU.ResDict <Syroot.NintenTools.Bfres.UserData>();

            //Set flags
            if (clr0.Loop)
            {
                fshu.Flags |= ResU.ShaderParamAnimFlags.Looping;
            }

            //Set mat anims and then calculate data after
            foreach (var entry in clr0.Children)
            {
                fshu.ShaderParamMatAnims.Add(Clr0Entry2ShaderMatAnim(clr0, (CLR0MaterialNode)entry));
            }

            fshu.BakedSize   = CalculateBakeSize(fshu);
            fshu.BindIndices = SetIndices(fshu);

            return(fshu);
        }
        public static ResNX.MaterialAnim FSHUConvertWiiUToSwitch(ResU.ShaderParamAnim ShaderAnim)
        {
            ResNX.MaterialAnim matAnim = new ResNX.MaterialAnim();
            matAnim.Name        = ShaderAnim.Name;
            matAnim.Path        = ShaderAnim.Path;
            matAnim.FrameCount  = ShaderAnim.FrameCount;
            matAnim.BindIndices = ShaderAnim.BindIndices;
            matAnim.BakedSize   = ShaderAnim.BakedSize;
            matAnim.Loop        = ShaderAnim.Flags.HasFlag(ResU.TexPatternAnimFlags.Looping);

            int CurveIndex = 0;

            for (int m = 0; m < ShaderAnim.ShaderParamMatAnims.Count; m++)
            {
                ResNX.MaterialAnimData matAnimData = new ResNX.MaterialAnimData();
                matAnimData.Name = ShaderAnim.ShaderParamMatAnims[m].Name;

                foreach (var paramU in ShaderAnim.ShaderParamMatAnims[m].ParamAnimInfos)
                {
                    ResNX.ParamAnimInfo animInfo = new ResNX.ParamAnimInfo();
                    animInfo.Name            = paramU.Name;
                    animInfo.BeginCurve      = paramU.BeginCurve;
                    animInfo.BeginConstant   = paramU.BeginConstant;
                    animInfo.ConstantCount   = paramU.ConstantCount;
                    animInfo.FloatCurveCount = paramU.FloatCurveCount;
                    animInfo.IntCurveCount   = paramU.IntCurveCount;
                    animInfo.SubBindIndex    = paramU.SubBindIndex;

                    matAnimData.ParamAnimInfos.Add(animInfo);
                }

                if (ShaderAnim.ShaderParamMatAnims[m].Curves.Count == 0)
                {
                    foreach (var constant in ShaderAnim.ShaderParamMatAnims[m].Constants)
                    {
                        //Add base values as constants
                        matAnimData.Constants.Add(new ResNX.AnimConstant()
                        {
                            Value          = (float)constant.Value,
                            AnimDataOffset = constant.AnimDataOffset,
                        });
                    }
                }
                else
                {
                    matAnimData.ShaderParamCurveIndex   = CurveIndex++;
                    matAnimData.BeginVisalConstantIndex = 0;

                    matAnimData.Curves = ConvertAnimCurveWiiUToSwitch(ShaderAnim.ShaderParamMatAnims[m].Curves);
                }

                matAnim.MaterialAnimDataList.Add(matAnimData);
            }

            matAnim.UserData = ConvertUserDataWiiU2Switch(ShaderAnim.UserData);

            return(matAnim);
        }
Ejemplo n.º 3
0
        public static ResU.ShaderParamAnim FSHUConvertSwitchToWiiU(ResNX.MaterialAnim materialAnim)
        {
            var shaderParamAnim = new ResU.ShaderParamAnim();

            shaderParamAnim.Name        = materialAnim.Name;
            shaderParamAnim.Path        = materialAnim.Path;
            shaderParamAnim.BindIndices = materialAnim.BindIndices;
            shaderParamAnim.FrameCount  = materialAnim.FrameCount;
            if (materialAnim.Loop)
            {
                shaderParamAnim.Flags |= ResU.ShaderParamAnimFlags.Looping;
            }

            for (int m = 0; m < materialAnim.MaterialAnimDataList.Count; m++)
            {
                if (materialAnim.MaterialAnimDataList[m].Constants == null)
                {
                    materialAnim.MaterialAnimDataList[m].Constants = new List <ResNX.AnimConstant>();
                }
                if (materialAnim.MaterialAnimDataList[m].Curves == null)
                {
                    materialAnim.MaterialAnimDataList[m].Curves = new List <ResNX.AnimCurve>();
                }

                ResU.ShaderParamMatAnim matAnimData = new ResU.ShaderParamMatAnim();
                shaderParamAnim.ShaderParamMatAnims.Add(matAnimData);
                matAnimData.Name   = materialAnim.MaterialAnimDataList[m].Name;
                matAnimData.Curves = ConvertAnimCurveSwitchToWiiU(materialAnim.MaterialAnimDataList[m].Curves);

                foreach (var constants in materialAnim.MaterialAnimDataList[m].Constants)
                {
                    matAnimData.Constants.Add(new ResU.AnimConstant()
                    {
                        AnimDataOffset = constants.AnimDataOffset,
                        Value          = (float)constants.Value,
                    });
                }

                foreach (var paramInfoNX in materialAnim.MaterialAnimDataList[m].ParamAnimInfos)
                {
                    var paramInfoU = new ResU.ParamAnimInfo();
                    paramInfoU.Name            = paramInfoNX.Name;
                    paramInfoU.BeginCurve      = paramInfoNX.BeginCurve;
                    paramInfoU.BeginConstant   = paramInfoNX.BeginConstant;
                    paramInfoU.FloatCurveCount = paramInfoNX.FloatCurveCount;
                    paramInfoU.IntCurveCount   = paramInfoNX.IntCurveCount;
                    paramInfoU.SubBindIndex    = paramInfoNX.SubBindIndex;
                    paramInfoU.ConstantCount   = paramInfoNX.ConstantCount;
                    matAnimData.ParamAnimInfos.Add(paramInfoU);
                }
            }

            return(shaderParamAnim);
        }
Ejemplo n.º 4
0
        private static ushort[] SetIndices(ResU.ShaderParamAnim fshu)
        {
            List <ushort> indces = new List <ushort>();

            foreach (var matAnim in fshu.ShaderParamMatAnims)
            {
                indces.Add(65535);
            }

            return(indces.ToArray());
        }
Ejemplo n.º 5
0
 private static uint CalculateBakeSize(ResU.ShaderParamAnim fshu)
 {
     return(0);
 }