// TODO: Methods to retrieve the strongly-typed shader param value. // ---- METHODS ------------C:\Users\Nathan\Documents\GitHub\NintenTools.Bfres-master\NintenTools.Bfres\src\Syroot.NintenTools.Bfres\ExternalFile\------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { Type = loader.ReadEnum <ShaderParamType>(true); byte sizData = loader.ReadByte(); if (sizData != (byte)DataSize && sizData > DataSize) { UsePadding = true; PaddingLength = sizData - (byte)DataSize; } DataOffset = loader.ReadUInt16(); offset = loader.ReadInt32(); // Uniform variable offset. if (loader.ResFile.Version >= 0x03040000) { callbackPointer = loader.ReadUInt32(); DependedIndex = loader.ReadUInt16(); DependIndex = loader.ReadUInt16(); } else if (loader.ResFile.Version >= 0x03030000 && loader.ResFile.Version < 0x03040000) { callbackPointer = loader.ReadUInt32(); DependedIndex = loader.ReadUInt16(); DependIndex = loader.ReadUInt16(); uint FMATOffset = loader.ReadUInt32(); //Why does this have this???? } Name = loader.LoadString(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { ShaderArchiveName = loader.LoadString(); ShadingModelName = loader.LoadString(); if (loader.IsSwitch) { AttribAssigns = loader.LoadDictValues <ResString>(); SamplerAssigns = loader.LoadDictValues <ResString>(); ShaderOptions = loader.LoadDictValues <ResString>(); Revision = loader.ReadUInt32(); byte numAttribAssign = loader.ReadByte(); byte numSamplerAssign = loader.ReadByte(); ushort numShaderOption = loader.ReadUInt16(); } else { Revision = loader.ReadUInt32(); byte numAttribAssign = loader.ReadByte(); byte numSamplerAssign = loader.ReadByte(); ushort numShaderOption = loader.ReadUInt16(); AttribAssigns = loader.LoadDict <ResString>(); SamplerAssigns = loader.LoadDict <ResString>(); ShaderOptions = loader.LoadDict <ResString>(); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { Switch.ModelParser.Read((Switch.Core.ResFileSwitchLoader)loader, this); } else { Name = loader.LoadString(); Path = loader.LoadString(); Skeleton = loader.Load <Skeleton>(); uint ofsVertexBufferList = loader.ReadOffset(); Shapes = loader.LoadDict <Shape>(); Materials = loader.LoadDict <Material>(); UserData = loader.LoadDict <UserData>(); ushort numVertexBuffer = loader.ReadUInt16(); ushort numShape = loader.ReadUInt16(); ushort numMaterial = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); uint totalVertexCount = loader.ReadUInt32(); if (loader.ResFile.Version >= 0x03030000) { uint userPointer = loader.ReadUInt32(); } VertexBuffers = loader.LoadList <VertexBuffer>(numVertexBuffer, ofsVertexBufferList); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { if (loader.ResFile.VersionMajor2 == 9) { _flags = loader.ReadUInt32(); } else { ((Switch.Core.ResFileSwitchLoader)loader).LoadHeaderBlock(); } long BoneDictOffset = loader.ReadOffset(); long BoneArrayOffset = loader.ReadOffset(); Bones = loader.LoadDictValues <Bone>(BoneDictOffset, BoneArrayOffset); uint MatrixToBoneListOffset = loader.ReadOffset(); uint InverseModelMatricesOffset = loader.ReadOffset(); if (loader.ResFile.VersionMajor2 == 8) { loader.Seek(16); } if (loader.ResFile.VersionMajor2 == 9) { loader.Seek(8); } long userPointer = loader.ReadInt64(); if (loader.ResFile.VersionMajor2 != 9) { _flags = loader.ReadUInt32(); } ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(6); MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix)), MatrixToBoneListOffset); InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix), InverseModelMatricesOffset)?.ToList(); } else { _flags = loader.ReadUInt32(); ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(2); Bones = loader.LoadDict <Bone>(); uint ofsBoneList = loader.ReadOffset(); // Only load dict. MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix))); if (loader.ResFile.Version >= 0x03040000) { InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix))?.ToList(); } uint userPointer = loader.ReadUInt32(); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { unk = loader.ReadUInt32(); uint Size = loader.ReadUInt32(); BufferOffset = loader.ReadInt64(); byte[] padding = loader.ReadBytes(16); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { Switch.VisibilityAnimParser.Read((Switch.Core.ResFileSwitchLoader)loader, this); } else { Name = loader.LoadString(); Path = loader.LoadString(); _flags = loader.ReadUInt16(); ushort numAnim = 0; ushort numCurve = 0; if (loader.ResFile.Version >= 0x03040000) { ushort numUserData = loader.ReadUInt16(); FrameCount = loader.ReadInt32(); numAnim = loader.ReadUInt16(); numCurve = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); } else { FrameCount = loader.ReadInt16(); numAnim = loader.ReadUInt16(); numCurve = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); int padding2 = loader.ReadInt16(); } BindModel = loader.Load <Model>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numAnim)); Names = loader.LoadCustom(() => loader.LoadStrings(numAnim)); // Offset to name list. Curves = loader.LoadList <AnimCurve>(numCurve); baseDataBytes = new List <byte>(); BaseDataList = loader.LoadCustom(() => { bool[] baseData = new bool[numAnim]; int i = 0; while (i < numAnim) { byte b = loader.ReadByte(); baseDataBytes.Add(b); for (int j = 0; j < 8 && i < numAnim; j++) { baseData[i] = b.GetBit(j); } i++; } return(baseData); }); UserData = loader.LoadDict <UserData>(); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { PrimitiveType = loader.ReadEnum <GX2PrimitiveType>(true); IndexFormat = loader.ReadEnum <GX2IndexFormat>(true); uint indexCount = loader.ReadUInt32(); ushort numSubMesh = loader.ReadUInt16(); loader.Seek(2); SubMeshes = loader.LoadList <SubMesh>(numSubMesh); IndexBuffer = loader.Load <Buffer>(); FirstVertex = loader.ReadUInt32(); }
void IResData.Load(ResFileLoader loader) { if (loader.ResFile.Version >= 0x02040000) { loader.CheckSignature(_signature); Name = loader.LoadString(); Path = loader.LoadString(); Flags = loader.ReadEnum <ShaderParamAnimFlags>(true); ushort numMatAnim = 0; if (loader.ResFile.Version >= 0x03040000) { FrameCount = loader.ReadInt32(); numMatAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); int numParamAnim = loader.ReadInt32(); int numCurve = loader.ReadInt32(); BakedSize = loader.ReadUInt32(); } else { FrameCount = loader.ReadUInt16(); numMatAnim = loader.ReadUInt16(); unk = loader.ReadUInt32(); int numCurve = loader.ReadInt32(); BakedSize = loader.ReadUInt32(); int padding2 = loader.ReadInt32(); } BindModel = loader.Load <Model>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numMatAnim)); ShaderParamMatAnims = loader.LoadList <ShaderParamMatAnim>(numMatAnim); UserData = loader.LoadDict <UserData>(); } else { Flags = loader.ReadEnum <ShaderParamAnimFlags>(true); FrameCount = loader.ReadInt16(); ushort numMatAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); ushort unk = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); Name = loader.LoadString(); Path = loader.LoadString(); BindModel = loader.Load <Model>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numMatAnim)); ShaderParamMatAnims = loader.LoadList <ShaderParamMatAnim>(numMatAnim); } }
void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); byte numVertexAttrib = loader.ReadByte(); byte numBuffer = loader.ReadByte(); ushort idx = loader.ReadUInt16(); uint vertexCount = loader.ReadUInt32(); VertexSkinCount = loader.ReadByte(); loader.Seek(3); uint ofsVertexAttribList = loader.ReadOffset(); // Only load dict. Attributes = loader.LoadDict <VertexAttrib>(); Buffers = loader.LoadList <Buffer>(numBuffer); uint userPointer = loader.ReadUInt32(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); _flags = loader.ReadUInt32(); ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(2); Bones = loader.LoadDict <Bone>(); uint ofsBoneList = loader.ReadOffset(); // Only load dict. MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix))); InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix)); uint userPointer = loader.ReadUInt32(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { uint ofsData = loader.ReadOffset(); uint sizData = loader.ReadUInt32(); Data = loader.LoadCustom(() => loader.ReadBytes((int)sizData), ofsData); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { Switch.LightAnimParser.Read((Switch.Core.ResFileSwitchLoader)loader, this); } else { Flags = loader.ReadEnum <LightAnimFlags>(true); ushort numUserData = loader.ReadUInt16(); FrameCount = loader.ReadInt32(); byte numCurve = loader.ReadByte(); LightTypeIndex = loader.ReadSByte(); DistanceAttnFuncIndex = loader.ReadSByte(); AngleAttnFuncIndex = loader.ReadSByte(); BakedSize = loader.ReadUInt32(); Name = loader.LoadString(); LightTypeName = loader.LoadString(); DistanceAttnFuncName = loader.LoadString(); AngleAttnFuncName = loader.LoadString(); Curves = loader.LoadList <AnimCurve>(numCurve); BaseData = loader.LoadCustom(() => new LightAnimData(loader, AnimatedFields)); UserData = loader.LoadDict <UserData>(); } }
// TODO: Methods to access ShaderParam variable values. // ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Name = loader.LoadString(); Flags = loader.ReadEnum <MaterialFlags>(true); ushort idx = loader.ReadUInt16(); ushort numRenderInfo = loader.ReadUInt16(); byte numSampler = loader.ReadByte(); byte numTextureRef = loader.ReadByte(); ushort numShaderParam = loader.ReadUInt16(); ushort numShaderParamVolatile = loader.ReadUInt16(); ushort sizParamSource = loader.ReadUInt16(); ushort sizParamRaw = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); RenderInfos = loader.LoadDict <RenderInfo>(); RenderState = loader.Load <RenderState>(); ShaderAssign = loader.Load <ShaderAssign>(); TextureRefs = loader.LoadList <TextureRef>(numTextureRef); uint ofsSamplerList = loader.ReadOffset(); // Only use dict. Samplers = loader.LoadDict <Sampler>(); uint ofsShaderParamList = loader.ReadOffset(); // Only use dict. ShaderParams = loader.LoadDict <ShaderParam>(); ShaderParamData = loader.LoadCustom(() => loader.ReadBytes(sizParamSource)); UserData = loader.LoadDict <UserData>(); VolatileFlags = loader.LoadCustom(() => loader.ReadBytes((int)Math.Ceiling(numShaderParam / 8f))); uint userPointer = loader.ReadUInt32(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Name = loader.LoadString(); Path = loader.LoadString(); _flags = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); FrameCount = loader.ReadInt32(); ushort numAnim = loader.ReadUInt16(); ushort numCurve = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); BindModel = loader.Load <Model>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numAnim)); Names = loader.LoadCustom(() => loader.LoadStrings(numAnim)); // Offset to name list. Curves = loader.LoadList <AnimCurve>(numCurve); BaseDataList = loader.LoadCustom(() => { bool[] baseData = new bool[numAnim]; int i = 0; while (i < numAnim) { byte b = loader.ReadByte(); for (int j = 0; j < 8 && i < numAnim; j++) { baseData[i++] = b.GetBit(j); } } return(baseData); }); UserData = loader.LoadDict <UserData>(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Name = loader.LoadString(); Path = loader.LoadString(); _flags = loader.ReadUInt32(); FrameCount = loader.ReadInt32(); ushort numBoneAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); int numCurve = loader.ReadInt32(); BakedSize = loader.ReadUInt32(); BoneAnims = loader.LoadList <BoneAnim>(numBoneAnim); BindSkeleton = loader.Load <Skeleton>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numBoneAnim)); UserData = loader.LoadDict <UserData>(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { if (loader.ResFile.Version >= 0x02040000) { loader.CheckSignature(_signature); Name = loader.LoadString(); Path = loader.LoadString(); _flags = loader.ReadUInt32(); if (loader.ResFile.Version >= 0x03040000) { FrameCount = loader.ReadInt32(); numBoneAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); int numCurve = loader.ReadInt32(); BakedSize = loader.ReadUInt32(); } else { FrameCount = loader.ReadUInt16(); numBoneAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); ushort numCurve = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); loader.Seek(4); //padding } BoneAnims = loader.LoadList <BoneAnim>(numBoneAnim).ToList(); BindSkeleton = loader.Load <Skeleton>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numBoneAnim)); UserData = loader.LoadDict <UserData>(); } else { _flags = loader.ReadUInt32(); FrameCount = loader.ReadUInt16(); numBoneAnim = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); ushort numCurve = loader.ReadUInt16(); Name = loader.LoadString(); Path = loader.LoadString(); BoneAnims = loader.LoadList <BoneAnim>(numBoneAnim).ToList(); BindSkeleton = loader.Load <Skeleton>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numBoneAnim)); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { _flags = loader.ReadUInt32(); PolygonControl = new PolygonControl() { Value = loader.ReadUInt32() }; DepthControl = new DepthControl() { Value = loader.ReadUInt32() }; AlphaControl = new AlphaControl() { Value = loader.ReadUInt32() }; AlphaRefValue = loader.ReadSingle(); ColorControl = new ColorControl() { Value = loader.ReadUInt32() }; BlendTarget = loader.ReadUInt32(); BlendControl = new BlendControl() { Value = loader.ReadUInt32() }; BlendColor = loader.ReadVector4F(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { if (loader.ResFile.Version >= 0x02040000) { uint ofsData = loader.ReadOffset(); uint sizData = loader.ReadUInt32(); Data = loader.LoadCustom(() => loader.ReadBytes((int)sizData), ofsData); } }
public static void Load(ResFileLoader loader, ResFile resFile) { loader.CheckSignature("FRES"); resFile.Version = loader.ReadUInt32(); resFile.SetVersionInfo(resFile.Version); resFile.ByteOrder = loader.ReadByteOrder(); ushort sizHeader = loader.ReadUInt16(); uint sizFile = loader.ReadUInt32(); resFile.Alignment = loader.ReadUInt32(); resFile.Name = loader.LoadString(); uint sizStringPool = loader.ReadUInt32(); uint ofsStringPool = loader.ReadOffset(); resFile.Models = loader.LoadDict <Model>(); var textures = loader.LoadDict <Texture>(); resFile.SkeletalAnims = loader.LoadDict <SkeletalAnim>(); resFile.ShaderParamAnims = loader.LoadDict <MaterialAnim>(); resFile.ColorAnims = loader.LoadDict <MaterialAnim>(); resFile.TexSrtAnims = loader.LoadDict <MaterialAnim>(); resFile.TexPatternAnims = loader.LoadDict <MaterialAnim>(); resFile.BoneVisibilityAnims = loader.LoadDict <VisibilityAnim>(); loader.LoadDict <VisibilityAnim>(); resFile.ShapeAnims = loader.LoadDict <ShapeAnim>(); resFile.Textures = new ResDict <TextureShared>(); foreach (var tex in textures) { resFile.Textures.Add(tex.Key, tex.Value); } if (loader.ResFile.Version >= 0x02040000) { resFile.SceneAnims = loader.LoadDict <SceneAnim>(); resFile.ExternalFiles = loader.LoadDict <ExternalFile>(); ushort numModel = loader.ReadUInt16(); ushort numTexture = loader.ReadUInt16(); ushort numSkeletalAnim = loader.ReadUInt16(); ushort numShaderParamAnim = loader.ReadUInt16(); ushort numColorAnim = loader.ReadUInt16(); ushort numTexSrtAnim = loader.ReadUInt16(); ushort numTexPatternAnim = loader.ReadUInt16(); ushort numBoneVisibilityAnim = loader.ReadUInt16(); ushort numMatVisibilityAnim = loader.ReadUInt16(); ushort numShapeAnim = loader.ReadUInt16(); ushort numSceneAnim = loader.ReadUInt16(); ushort numExternalFile = loader.ReadUInt16(); uint userPointer = loader.ReadUInt32(); } else //Note very old versions have no counts and is mostly unkown atm { uint userPointer = loader.ReadUInt32(); uint userPointer2 = loader.ReadUInt32(); resFile.SceneAnims = loader.LoadDict <SceneAnim>(); resFile.ExternalFiles = loader.LoadDict <ExternalFile>(); } }
void IResData.Load(ResFileLoader loader) { Strings.Clear(); if (loader.IsSwitch) { loader.Seek(-0x14, System.IO.SeekOrigin.Current); uint Signature = loader.ReadUInt32(); uint blockOffset = loader.ReadUInt32(); long BlockSize = loader.ReadInt64(); uint StringCount = loader.ReadUInt32(); for (int i = 0; i < StringCount + 1; i++) { ushort size = loader.ReadUInt16(); Strings.Add(loader.ReadString(BinaryStringFormat.ZeroTerminated)); loader.Align(2); } } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { Switch.ShapeAnimParser.Read((Switch.Core.ResFileSwitchLoader)loader, this); } else { Name = loader.LoadString(); Path = loader.LoadString(); Flags = loader.ReadEnum <ShapeAnimFlags>(true); ushort numUserData; ushort numVertexShapeAnim; ushort numKeyShapeAnim; ushort numCurve; if (loader.ResFile.Version >= 0x03040000) { numUserData = loader.ReadUInt16(); FrameCount = loader.ReadInt32(); numVertexShapeAnim = loader.ReadUInt16(); numKeyShapeAnim = loader.ReadUInt16(); numCurve = loader.ReadUInt16(); loader.Seek(2); BakedSize = loader.ReadUInt32(); } else { FrameCount = loader.ReadUInt16(); numVertexShapeAnim = loader.ReadUInt16(); numKeyShapeAnim = loader.ReadUInt16(); numUserData = loader.ReadUInt16(); numCurve = loader.ReadUInt16(); BakedSize = loader.ReadUInt32(); } BindModel = loader.Load <Model>(); BindIndices = loader.LoadCustom(() => loader.ReadUInt16s(numVertexShapeAnim)); VertexShapeAnims = loader.LoadList <VertexShapeAnim>(numVertexShapeAnim); UserData = loader.LoadDict <UserData>(); } }
private Node ReadNode(ResFileLoader loader) { return(new Node() { Reference = loader.ReadUInt32(), IdxLeft = loader.ReadUInt16(), IdxRight = loader.ReadUInt16(), Key = loader.LoadString(), }); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { TexSampler = new TexSampler(loader.ReadUInt32s(3)); uint handle = loader.ReadUInt32(); Name = loader.LoadString(); byte idx = loader.ReadByte(); loader.Seek(3); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { if (loader.IsSwitch) { Name = loader.LoadString(); UserData = loader.LoadDictValues <UserData>(); if (loader.ResFile.VersionMajor2 == 8 || loader.ResFile.VersionMajor2 == 9) { loader.Seek(16); } ushort idx = loader.ReadUInt16(); ParentIndex = loader.ReadInt16(); SmoothMatrixIndex = loader.ReadInt16(); RigidMatrixIndex = loader.ReadInt16(); BillboardIndex = loader.ReadInt16(); ushort numUserData = loader.ReadUInt16(); _flags = loader.ReadUInt32(); Scale = loader.ReadVector3F(); Rotation = loader.ReadVector4F(); Position = loader.ReadVector3F(); } else { Name = loader.LoadString(); ushort idx = loader.ReadUInt16(); ParentIndex = loader.ReadInt16(); SmoothMatrixIndex = loader.ReadInt16(); RigidMatrixIndex = loader.ReadInt16(); BillboardIndex = loader.ReadInt16(); ushort numUserData = loader.ReadUInt16(); _flags = loader.ReadUInt32(); Scale = loader.ReadVector3F(); Rotation = loader.ReadVector4F(); Position = loader.ReadVector3F(); UserData = loader.LoadDict <UserData>(); if (loader.ResFile.Version < 0x03040000) { InverseMatrix = loader.ReadMatrix3x4(); } } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { uint dataPointer = loader.ReadUInt32(); uint size = loader.ReadUInt32(); uint handle = loader.ReadUInt32(); Stride = loader.ReadUInt16(); ushort numBuffering = loader.ReadUInt16(); uint contextPointer = loader.ReadUInt32(); Data = loader.LoadCustom(() => { byte[][] data = new byte[numBuffering][]; for (int i = 0; i < numBuffering; i++) { data[i] = loader.ReadBytes((int)size); } return(data); }); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Name = loader.LoadString(); Path = loader.LoadString(); Skeleton = loader.Load <Skeleton>(); uint ofsVertexBufferList = loader.ReadOffset(); Shapes = loader.LoadDict <Shape>(); Materials = loader.LoadDict <Material>(); UserData = loader.LoadDict <UserData>(); ushort numVertexBuffer = loader.ReadUInt16(); ushort numShape = loader.ReadUInt16(); ushort numMaterial = loader.ReadUInt16(); ushort numUserData = loader.ReadUInt16(); uint totalVertexCount = loader.ReadUInt32(); uint userPointer = loader.ReadUInt32(); VertexBuffers = loader.LoadList <VertexBuffer>(numVertexBuffer, ofsVertexBufferList); }
void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { Switch.VertexBufferParser.Load((Switch.Core.ResFileSwitchLoader)loader, this); } else { byte numVertexAttrib = loader.ReadByte(); byte numBuffer = loader.ReadByte(); ushort idx = loader.ReadUInt16(); uint vertexCount = loader.ReadUInt32(); VertexSkinCount = loader.ReadByte(); loader.Seek(3); uint ofsVertexAttribList = loader.ReadOffset(); // Only load dict. Attributes = loader.LoadDict <VertexAttrib>(); Buffers = loader.LoadList <Buffer>(numBuffer); uint userPointer = loader.ReadUInt32(); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Version = loader.ReadUInt32(); ByteOrder = loader.ReadEnum <ByteOrder>(true); ushort sizHeader = loader.ReadUInt16(); uint sizFile = loader.ReadUInt32(); Alignment = loader.ReadUInt32(); Name = loader.LoadString(); uint sizStringPool = loader.ReadUInt32(); uint ofsStringPool = loader.ReadOffset(); Models = loader.LoadDict <Model>(); Textures = loader.LoadDict <Texture>(); SkeletalAnims = loader.LoadDict <SkeletalAnim>(); ShaderParamAnims = loader.LoadDict <ShaderParamAnim>(); ColorAnims = loader.LoadDict <ShaderParamAnim>(); TexSrtAnims = loader.LoadDict <ShaderParamAnim>(); TexPatternAnims = loader.LoadDict <TexPatternAnim>(); BoneVisibilityAnims = loader.LoadDict <VisibilityAnim>(); MatVisibilityAnims = loader.LoadDict <VisibilityAnim>(); ShapeAnims = loader.LoadDict <ShapeAnim>(); SceneAnims = loader.LoadDict <SceneAnim>(); ExternalFiles = loader.LoadDict <ExternalFile>(); ushort numModel = loader.ReadUInt16(); ushort numTexture = loader.ReadUInt16(); ushort numSkeletalAnim = loader.ReadUInt16(); ushort numShaderParamAnim = loader.ReadUInt16(); ushort numColorAnim = loader.ReadUInt16(); ushort numTexSrtAnim = loader.ReadUInt16(); ushort numTexPatternAnim = loader.ReadUInt16(); ushort numBoneVisibilityAnim = loader.ReadUInt16(); ushort numMatVisibilityAnim = loader.ReadUInt16(); ushort numShapeAnim = loader.ReadUInt16(); ushort numSceneAnim = loader.ReadUInt16(); ushort numExternalFile = loader.ReadUInt16(); uint userPointer = loader.ReadUInt32(); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { _flags = loader.ReadUInt32(); Name = loader.LoadString(); BeginRotate = loader.ReadByte(); BeginTranslate = loader.ReadByte(); byte numCurve = loader.ReadByte(); BeginBaseTranslate = loader.ReadByte(); BeginCurve = loader.ReadInt32(); Curves = loader.LoadList <AnimCurve>(numCurve); BaseData = loader.LoadCustom(() => new BoneAnimData(loader, FlagsBase)); }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); Version = loader.ReadUInt32(); SetVersionInfo(Version); ByteOrder = loader.ReadEnum <ByteOrder>(true); ushort sizHeader = loader.ReadUInt16(); uint sizFile = loader.ReadUInt32(); Alignment = loader.ReadUInt32(); Name = loader.LoadString(); uint sizStringPool = loader.ReadUInt32(); uint ofsStringPool = loader.ReadOffset(); Models = loader.LoadDict <Model>(); Textures = loader.LoadDict <Texture>(); SkeletalAnims = loader.LoadDict <SkeletalAnim>(); ShaderParamAnims = loader.LoadDict <ShaderParamAnim>(); ColorAnims = loader.LoadDict <ShaderParamAnim>(); TexSrtAnims = loader.LoadDict <ShaderParamAnim>(); TexPatternAnims = loader.LoadDict <TexPatternAnim>(); BoneVisibilityAnims = loader.LoadDict <VisibilityAnim>(); MatVisibilityAnims = loader.LoadDict <VisibilityAnim>(); ShapeAnims = loader.LoadDict <ShapeAnim>(); if (loader.ResFile.Version >= 0x02040000) { SceneAnims = loader.LoadDict <SceneAnim>(); ExternalFiles = loader.LoadDict <ExternalFile>(); ushort numModel = loader.ReadUInt16(); ushort numTexture = loader.ReadUInt16(); ushort numSkeletalAnim = loader.ReadUInt16(); ushort numShaderParamAnim = loader.ReadUInt16(); ushort numColorAnim = loader.ReadUInt16(); ushort numTexSrtAnim = loader.ReadUInt16(); ushort numTexPatternAnim = loader.ReadUInt16(); ushort numBoneVisibilityAnim = loader.ReadUInt16(); ushort numMatVisibilityAnim = loader.ReadUInt16(); ushort numShapeAnim = loader.ReadUInt16(); ushort numSceneAnim = loader.ReadUInt16(); ushort numExternalFile = loader.ReadUInt16(); uint userPointer = loader.ReadUInt32(); } else //Note very old versions have no counts and is mostly unkown atm { uint userPointer = loader.ReadUInt32(); uint userPointer2 = loader.ReadUInt32(); SceneAnims = loader.LoadDict <SceneAnim>(); ExternalFiles = loader.LoadDict <ExternalFile>(); } }