public ValueArray(EndianBinaryReader reader, int[] version) { if (version[0] < 5 || (version[0] == 5 && version[1] < 5)) //5.5 down { int numBools = reader.ReadInt32(); m_BoolValues = new bool[numBools]; for (int i = 0; i < numBools; i++) { m_BoolValues[i] = reader.ReadBoolean(); } reader.AlignStream(4); m_IntValues = reader.ReadInt32Array(reader.ReadInt32()); m_FloatValues = reader.ReadSingleArray(reader.ReadInt32()); } int numPosValues = reader.ReadInt32(); m_PositionValues = new object[numPosValues]; for (int i = 0; i < numPosValues; i++) { m_PositionValues[i] = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4(); //5.4 and up } m_QuaternionValues = reader.ReadVector4Array(reader.ReadInt32()); int numScaleValues = reader.ReadInt32(); m_ScaleValues = new object[numScaleValues]; for (int i = 0; i < numScaleValues; i++) { m_ScaleValues[i] = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4(); //5.4 adn up } if (version[0] > 5 || (version[0] == 5 && version[1] >= 5)) //5.5 and up { m_FloatValues = reader.ReadSingleArray(reader.ReadInt32()); m_IntValues = reader.ReadInt32Array(reader.ReadInt32()); int numBools = reader.ReadInt32(); m_BoolValues = new bool[numBools]; for (int i = 0; i < numBools; i++) { m_BoolValues[i] = reader.ReadBoolean(); } reader.AlignStream(4); } }
private SerializedType ReadSerializedType(bool isRefType) { var type = new SerializedType(); type.classID = reader.ReadInt32(); if (header.m_Version >= SerializedFileFormatVersion.kRefactoredClassId) { type.m_IsStrippedType = reader.ReadBoolean(); } if (header.m_Version >= SerializedFileFormatVersion.kRefactorTypeData) { type.m_ScriptTypeIndex = reader.ReadInt16(); } if (header.m_Version >= SerializedFileFormatVersion.kHasTypeTreeHashes) { if (isRefType && type.m_ScriptTypeIndex >= 0) { type.m_ScriptID = reader.ReadBytes(16); } else if ((header.m_Version < SerializedFileFormatVersion.kRefactoredClassId && type.classID < 0) || (header.m_Version >= SerializedFileFormatVersion.kRefactoredClassId && type.classID == 114)) { type.m_ScriptID = reader.ReadBytes(16); } type.m_OldTypeHash = reader.ReadBytes(16); } if (m_EnableTypeTree) { type.m_Type = new TypeTree(); type.m_Type.m_Nodes = new List <TypeTreeNode>(); if (header.m_Version >= SerializedFileFormatVersion.kUnknown_12 || header.m_Version == SerializedFileFormatVersion.kUnknown_10) { TypeTreeBlobRead(type.m_Type); } else { ReadTypeTree(type.m_Type); } if (header.m_Version >= SerializedFileFormatVersion.kStoresTypeDependencies) { if (isRefType) { type.m_KlassName = reader.ReadStringToNull(); type.m_NameSpace = reader.ReadStringToNull(); type.m_AsmName = reader.ReadStringToNull(); } else { type.m_TypeDependencies = reader.ReadInt32Array(); } } } return(type); }
public ClipMuscleConstant(EndianBinaryReader reader, int[] version) { m_DeltaPose = new HumanPose(reader, version); m_StartX = new xform(reader, version); if (version[0] > 5 || (version[0] == 5 && version[1] >= 5))//5.5 and up { m_StopX = new xform(reader, version); } m_LeftFootStartX = new xform(reader, version); m_RightFootStartX = new xform(reader, version); if (version[0] < 5)//5.0 down { m_MotionStartX = new xform(reader, version); m_MotionStopX = new xform(reader, version); } m_AverageSpeed = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4();//5.4 and up m_Clip = new Clip(reader, version); m_StartTime = reader.ReadSingle(); m_StopTime = reader.ReadSingle(); m_OrientationOffsetY = reader.ReadSingle(); m_Level = reader.ReadSingle(); m_CycleOffset = reader.ReadSingle(); m_AverageAngularSpeed = reader.ReadSingle(); int numIndices = reader.ReadInt32(); m_IndexArray = reader.ReadInt32Array(numIndices); int numDeltas = reader.ReadInt32(); m_ValueArrayDelta = new List <ValueDelta>(numDeltas); for (int i = 0; i < numDeltas; i++) { m_ValueArrayDelta.Add(new ValueDelta(reader)); } if (version[0] > 5 || (version[0] == 5 && version[1] >= 3))//5.3 and up { m_ValueArrayReferencePose = reader.ReadSingleArray(reader.ReadInt32()); } m_Mirror = reader.ReadBoolean(); m_LoopTime = reader.ReadBoolean(); m_LoopBlend = reader.ReadBoolean(); m_LoopBlendOrientation = reader.ReadBoolean(); m_LoopBlendPositionY = reader.ReadBoolean(); m_LoopBlendPositionXZ = reader.ReadBoolean(); if (version[0] > 5 || (version[0] == 5 && version[1] >= 5))//5.5 and up { m_StartAtOrigin = reader.ReadBoolean(); } m_KeepOriginalOrientation = reader.ReadBoolean(); m_KeepOriginalPositionY = reader.ReadBoolean(); m_KeepOriginalPositionXZ = reader.ReadBoolean(); m_HeightFromFeet = reader.ReadBoolean(); reader.AlignStream(4); }
private SerializedType ReadSerializedType() { var type = new SerializedType(); type.classID = reader.ReadInt32(); if (header.m_Version >= 16) { type.m_IsStrippedType = reader.ReadBoolean(); } if (header.m_Version >= 17) { type.m_ScriptTypeIndex = reader.ReadInt16(); } if (header.m_Version >= 13) { if ((header.m_Version < 16 && type.classID < 0) || (header.m_Version >= 16 && type.classID == 114)) { type.m_ScriptID = reader.ReadBytes(16); //Hash128 } type.m_OldTypeHash = reader.ReadBytes(16); //Hash128 } if (m_EnableTypeTree) { var typeTree = new List <TypeTreeNode>(); if (header.m_Version >= 12 || header.m_Version == 10) { TypeTreeBlobRead(typeTree); } else { ReadTypeTree(typeTree); } if (header.m_Version >= 21) { type.m_TypeDependencies = reader.ReadInt32Array(); } type.m_Nodes = typeTree; } return(type); }