public FrameObjectLight(FrameObjectLight other) : base(other) { flags = other.flags; unkFloat1 = other.unkFloat1; unk_int = other.unk_int; unkFloat2 = other.unkFloat1; unk_byte1 = other.unk_byte1; unkFloat3 = other.unkFloat1; unk_byte2 = other.unk_byte2; unkFloat4 = other.unkFloat4; nameLight = new HashName(other.name.String); unk_int2 = other.unk_int2; unkFloat5 = other.unkFloat5; names = new HashName[4]; for (int i = 0; i != 4; i++) { names[i] = new HashName(names[i].String); } unkVector1 = other.unkVector1; unkVector2 = other.unkVector2; unk_byte3 = other.unk_byte3; unkVector3 = other.unkVector3; unkVector4 = other.unkVector4; unkVector5 = other.unkVector5; unkVector6 = other.unkVector6; }
public FrameObjectLight(FrameObjectLight other) : base(other) { Flags = other.Flags; LUnk1 = other.LUnk1; LUnk2 = other.LUnk2; LUnk3 = other.LUnk3; LUnk4 = other.LUnk4; LUnk5 = other.LUnk5; LUnk6 = other.LUnk6; UnkInt1 = other.UnkInt1; UnkVector_0 = other.UnkVector_0; LUnk7 = other.LUnk7; LUnk8 = other.LUnk8; UnkByte1 = other.UnkByte1; LUnk9 = other.LUnk9; LUnk10 = other.LUnk10; LUnk11 = other.LUnk11; LUnk12 = other.LUnk12; UnkVector_1 = other.UnkVector_1; UnkVector_2 = other.UnkVector_2; LUnk13 = other.LUnk13; LUnk14 = other.LUnk14; LUnk15 = other.LUnk15; UnkVector_3 = other.UnkVector_3; LUnk16 = other.LUnk16; LUnk17 = other.LUnk17; LUnk18 = other.LUnk18; UnkByte2 = other.UnkByte2; LUnk19 = other.LUnk19; LUnk20 = other.LUnk20; LUnk21 = other.LUnk21; LUnk22 = other.LUnk22; LUnk23 = other.LUnk23; ProjectionTexture = new HashName(other.ProjectionTexture); UnkInt2 = other.UnkInt2; LUnk24 = other.LUnk24; LUnk25 = other.LUnk25; UnkVector_4 = other.UnkVector_4; LUnk26 = other.LUnk26; LUnk27 = other.LUnk27; LUnk28 = other.LUnk28; LUnk29 = other.LUnk29; LUnk30 = other.LUnk30; UnkVector_5 = other.UnkVector_5; LUnk31 = other.LUnk31; LUnk32 = other.LUnk32; LUnk33 = other.LUnk33; LUnk34 = other.LUnk34; LUnk35 = other.LUnk35; TextureHashes = new HashName[4]; for (int i = 0; i < 4; i++) { TextureHashes[i] = new HashName(other.TextureHashes[i].String); } UnkBox = other.UnkBox; UnkByte3 = other.UnkByte3; UnknownMatrix = MatrixUtils.CopyFrom(other.UnknownMatrix); }
public static FrameObjectBase ReadFrameByObjectID(MemoryStream stream, ObjectType FrameType, bool isBigEndian) { switch (FrameType) { case ObjectType.Joint: FrameObjectJoint joint = new FrameObjectJoint(); joint.ReadFromFile(stream, isBigEndian); return(joint); case ObjectType.SingleMesh: FrameObjectSingleMesh mesh = new FrameObjectSingleMesh(); mesh.ReadFromFile(stream, isBigEndian); return(mesh); case ObjectType.Frame: FrameObjectFrame frame = new FrameObjectFrame(); frame.ReadFromFile(stream, isBigEndian); return(frame); case ObjectType.Light: FrameObjectLight light = new FrameObjectLight(); light.ReadFromFile(stream, isBigEndian); return(light); case ObjectType.Camera: FrameObjectCamera camera = new FrameObjectCamera(); camera.ReadFromFile(stream, isBigEndian); return(camera); case ObjectType.Component_U00000005: FrameObjectComponent_U005 u005 = new FrameObjectComponent_U005(); u005.ReadFromFile(stream, isBigEndian); return(u005); case ObjectType.Sector: FrameObjectSector sector = new FrameObjectSector(); sector.ReadFromFile(stream, isBigEndian); return(sector); case ObjectType.Dummy: FrameObjectDummy dummy = new FrameObjectDummy(); dummy.ReadFromFile(stream, isBigEndian); return(dummy); case ObjectType.ParticleDeflector: FrameObjectDeflector deflector = new FrameObjectDeflector(); deflector.ReadFromFile(stream, isBigEndian); return(deflector); case ObjectType.Area: FrameObjectArea area = new FrameObjectArea(); area.ReadFromFile(stream, isBigEndian); return(area); case ObjectType.Target: FrameObjectTarget target = new FrameObjectTarget(); target.ReadFromFile(stream, isBigEndian); return(target); case ObjectType.Model: FrameObjectModel model = new FrameObjectModel(); model.ReadFromFile(stream, isBigEndian); return(model); case ObjectType.Collision: FrameObjectCollision collision = new FrameObjectCollision(); collision.ReadFromFile(stream, isBigEndian); return(collision); default: Debug.WriteLine("Missing frame type!"); return(null); } }
public void ReadFromFile(MemoryStream reader, bool isBigEndian) { header = new FrameHeader(); header.ReadFromFile(reader, isBigEndian); int j = 0; for (int i = 0; i != header.SceneFolders.Count; i++) { frameScenes.Add(header.SceneFolders[i].RefID, header.SceneFolders[i]); NewFrames.Add(new FrameHolder(j++, header.SceneFolders[i])); } for (int i = 0; i != header.NumGeometries; i++) { FrameGeometry geo = new FrameGeometry(reader, isBigEndian); frameGeometries.Add(geo.RefID, geo); NewFrames.Add(new FrameHolder(j++, geo)); } for (int i = 0; i != header.NumMaterialResources; i++) { FrameMaterial mat = new FrameMaterial(reader, isBigEndian); frameMaterials.Add(mat.RefID, mat); NewFrames.Add(new FrameHolder(j++, mat)); } for (int i = 0; i != header.NumBlendInfos; i++) { FrameBlendInfo blendInfo = new FrameBlendInfo(reader, isBigEndian); frameBlendInfos.Add(blendInfo.RefID, blendInfo); NewFrames.Add(new FrameHolder(j++, blendInfo)); } for (int i = 0; i != header.NumSkeletons; i++) { FrameSkeleton skeleton = new FrameSkeleton(reader, isBigEndian); frameSkeletons.Add(skeleton.RefID, skeleton); NewFrames.Add(new FrameHolder(j++, skeleton)); } for (int i = 0; i != header.NumSkelHierachies; i++) { FrameSkeletonHierachy skeletonHierachy = new FrameSkeletonHierachy(reader, isBigEndian); frameSkeletonHierachies.Add(skeletonHierachy.RefID, skeletonHierachy); NewFrames.Add(new FrameHolder(j++, skeletonHierachy)); } int[] objectTypes = new int[header.NumObjects]; int numBlocks = header.NumFolderNames + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons + header.NumSkelHierachies; if (header.NumObjects > 0) { for (int i = 0; i != header.NumObjects; i++) { objectTypes[i] = reader.ReadInt32(isBigEndian); } for (int i = 0; i != header.NumObjects; i++) { FrameObjectBase newObject = new FrameObjectBase(); if (objectTypes[i] == (int)ObjectType.Joint) { newObject = new FrameObjectJoint(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.SingleMesh) { newObject = new FrameObjectSingleMesh(reader, isBigEndian); FrameObjectSingleMesh mesh = newObject as FrameObjectSingleMesh; if (mesh.MeshIndex != -1) { mesh.AddRef(FrameEntryRefTypes.Mesh, GetEntryFromIdx(mesh.MeshIndex).Data.RefID); mesh.Geometry = frameGeometries[mesh.Refs["Mesh"]]; } if (mesh.MaterialIndex != -1) { mesh.AddRef(FrameEntryRefTypes.Material, GetEntryFromIdx(mesh.MaterialIndex).Data.RefID); mesh.Material = frameMaterials[mesh.Refs["Material"]]; } } else if (objectTypes[i] == (int)ObjectType.Frame) { newObject = new FrameObjectFrame(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Light) { newObject = new FrameObjectLight(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Camera) { newObject = new FrameObjectCamera(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Component_U00000005) { newObject = new FrameObjectComponent_U005(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Sector) { newObject = new FrameObjectSector(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Dummy) { newObject = new FrameObjectDummy(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.ParticleDeflector) { newObject = new FrameObjectDeflector(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Area) { newObject = new FrameObjectArea(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Target) { newObject = new FrameObjectTarget(reader, isBigEndian); } else if (objectTypes[i] == (int)ObjectType.Model) { FrameObjectModel mesh = new FrameObjectModel(reader, isBigEndian); mesh.ReadFromFile(reader, isBigEndian); mesh.ReadFromFilePart2(reader, isBigEndian, (FrameSkeleton)GetEntryFromIdx(mesh.SkeletonIndex).Data, (FrameBlendInfo)GetEntryFromIdx(mesh.BlendInfoIndex).Data); mesh.AddRef(FrameEntryRefTypes.Mesh, GetEntryFromIdx(mesh.MeshIndex).Data.RefID); mesh.Geometry = frameGeometries[mesh.Refs[FrameEntry.MeshRef]]; mesh.AddRef(FrameEntryRefTypes.Material, GetEntryFromIdx(mesh.MaterialIndex).Data.RefID); mesh.Material = frameMaterials[mesh.Refs[FrameEntry.MaterialRef]]; mesh.AddRef(FrameEntryRefTypes.BlendInfo, GetEntryFromIdx(mesh.BlendInfoIndex).Data.RefID); mesh.BlendInfo = frameBlendInfos[mesh.Refs[FrameEntry.BlendInfoRef]]; mesh.AddRef(FrameEntryRefTypes.Skeleton, GetEntryFromIdx(mesh.SkeletonIndex).Data.RefID); mesh.Skeleton = frameSkeletons[mesh.Refs[FrameEntry.SkeletonRef]]; mesh.AddRef(FrameEntryRefTypes.SkeletonHierachy, GetEntryFromIdx(mesh.SkeletonHierachyIndex).Data.RefID); mesh.SkeletonHierarchy = frameSkeletonHierachies[mesh.Refs[FrameEntry.SkeletonHierRef]]; newObject = mesh; } else if (objectTypes[i] == (int)ObjectType.Collision) { newObject = new FrameObjectCollision(reader, isBigEndian); } frameObjects.Add(newObject.RefID, newObject); NewFrames.Add(new FrameHolder(i + numBlocks, newObject)); } } objectTypes = null; DefineFrameBlockParents(); }