Exemple #1
0
        public static fogAnimation extractFogAnimationData(BinaryReaderBigEndian input)
        {
            fogAnimation newAnimation = new fogAnimation();

            input.BaseStream.Position = 0xB0;              // fog animation header offset location
            uint currentHeaderOffset = input.ReadUInt32(); // fog animation header

            if (input.BaseStream.Position == 0)
            {
                throw new Exception("No fog animation header found!");
            }

            object newAnim = newAnimation;

            foreach (var field in typeof(fogAnimation).GetFields())
            {
                input.BaseStream.Position = currentHeaderOffset;
                uint            keyframeCount = input.ReadUInt32();
                uint            currentOffset = input.ReadUInt32();
                List <keyframe> currentList   = new List <keyframe>();
                for (uint offsetIterate = currentOffset; offsetIterate < currentOffset + (keyframeCount * 0x14); offsetIterate += 0x14)
                {
                    keyframe currentKeyframe;
                    input.BaseStream.Position    = offsetIterate;
                    currentKeyframe.easingType   = (easingTypes)input.ReadUInt32();
                    currentKeyframe.time         = input.ReadSingle();
                    currentKeyframe.value        = input.ReadSingle();
                    currentKeyframe.easingValue1 = input.ReadSingle();
                    currentKeyframe.easingValue2 = input.ReadSingle();
                    currentList.Add(currentKeyframe);
                }
                field.SetValue(newAnim, currentList);
                currentHeaderOffset += 0x8;
            }
            newAnimation = (fogAnimation)newAnim;
            return(newAnimation);
        }
Exemple #2
0
        public static fogHeader extractFogData(BinaryReaderBigEndian input)
        {
            fogHeader newHeader;

            input.BaseStream.Position = 0xBC;               // fog header offset location
            input.BaseStream.Position = input.ReadUInt32(); // fog header offset

            if (input.BaseStream.Position == 0)
            {
                throw new Exception("No fog header found!");
            }

            newHeader.fogType = (fogTypes)input.ReadByte();
            input.ReadBytes(3);     // unknown/null
            newHeader.fogStartDistance = input.ReadSingle();
            newHeader.fogEndDistance   = input.ReadSingle();
            newHeader.color.X          = input.ReadSingle();
            newHeader.color.Y          = input.ReadSingle();
            newHeader.color.Z          = input.ReadSingle();

            return(newHeader);
        }