示例#1
0
        public FBXAnimCurveNode(FBXFileNode node)
        {
            Id   = node.Id;
            Name = node.NodeName;
            Attr = Name;

            var propsNode = node.Nodes.Where(a => a.Name == "Properties70").FirstOrDefault();

            if (Name.Contains("T") || Name.Contains("R") || Name.Contains("S"))
            {
                foreach (var propNode in propsNode.Nodes)
                {
                    foreach (var prop in propNode.Properties)
                    {
                        if (prop.Data is string && (prop.Data as string).Contains("X"))
                        {
                            AttrX  = true;
                            ValueX = (float)(double)propNode.Properties[4].Data;
                        }
                        else if (prop.Data is string && (prop.Data as string).Contains("Y"))
                        {
                            AttrY  = true;
                            ValueY = (float)(double)propNode.Properties[4].Data;
                        }
                        else if (prop.Data is string && (prop.Data as string).Contains("Z"))
                        {
                            AttrZ  = true;
                            ValueZ = (float)(double)propNode.Properties[4].Data;
                        }
                    }
                }
            }
        }
示例#2
0
        public FBXAnimCurveNode(FBXFileNode node, FBXFile file, List <string> bones)
        {
            Id   = node.Id;
            Name = node.NodeName;
            Attr = Name;

            var propsNode = node.Nodes.Where(a => a.Name == "Properties70").FirstOrDefault();

            if (Name.Contains("T") || Name.Contains("R") || Name.Contains("S"))
            {
                foreach (var propNode in propsNode.Nodes)
                {
                    foreach (var prop in propNode.Properties)
                    {
                        if (prop.Data is string && (prop.Data as string).Contains("X"))
                        {
                            AttrX  = true;
                            ValueX = (float)(double)propNode.Properties[4].Data;
                        }
                        else if (prop.Data is string && (prop.Data as string).Contains("Y"))
                        {
                            AttrY  = true;
                            ValueY = (float)(double)propNode.Properties[4].Data;
                        }
                        else if (prop.Data is string && (prop.Data as string).Contains("Z"))
                        {
                            AttrZ  = true;
                            ValueZ = (float)(double)propNode.Properties[4].Data;
                        }
                    }
                }
            }

            ContainerIndices = file.Connections.Where(a => a.Src == node.Id).Select(a => a.Dst).ToArray();
            CurveIdx         = file.Connections.Where(a => a.Dst == node.Id).Select(a => a.Src).ToArray();

            for (int i = ContainerIndices.Length - 1; i >= 0; i--)
            {
                // gets the real id of the bone

                /*var boneId = bones.TakeWhile(a => a.Id != ContainerIndices[i]).Count();
                 *
                 * if(boneId >= 0)
                 * {
                 *  ContainerBoneId = boneId;
                 *  ContainerId = ContainerIndices[i];
                 *
                 *  break;
                 * }*/
            }
        }
示例#3
0
        public FBXAnimCurve(FBXFileNode node)
        {
            Id   = node.Id;
            Name = node.Name;

            Default = (double)node.Nodes.Where(a => a.Name == "Default").FirstOrDefault()
                      .Properties[0].Data;
            KeyVer = (int)node.Nodes.Where(a => a.Name == "KeyVer").FirstOrDefault()
                     .Properties[0].Data;
            KeyTime = (long[])node.Nodes.Where(a => a.Name == "KeyTime").FirstOrDefault()
                      .Properties[0].Data;
            KeyValueFloat = (float[])node.Nodes.Where(a => a.Name == "KeyValueFloat").FirstOrDefault()
                            .Properties[0].Data;
            KeyAttrFlags = (int[])node.Nodes.Where(a => a.Name == "KeyAttrFlags").FirstOrDefault()
                           .Properties[0].Data;
            KeyAttrDataFloat = (float[])node.Nodes.Where(a => a.Name == "KeyAttrDataFloat").FirstOrDefault()
                               .Properties[0].Data;
            KeyAttrRefCount = (int[])node.Nodes.Where(a => a.Name == "KeyAttrRefCount").FirstOrDefault()
                              .Properties[0].Data;
        }
示例#4
0
 public FBXAnimStack(FBXFileNode node)
 {
     Id   = node.Id;
     Name = node.Name;
 }
示例#5
0
 public FBXAnimLayer(FBXFileNode node)
 {
     Id   = node.Id;
     Name = node.Name;
 }