public PackedBitVector2(EndianBinaryReader reader) { m_NumItems = reader.ReadUInt32(); int numData = reader.ReadInt32(); m_Data = reader.ReadBytes(numData); reader.AlignStream(4); m_BitSize = reader.ReadByte(); reader.AlignStream(4); }
public PackedFloatVector(EndianBinaryReader reader) { m_NumItems = reader.ReadUInt32(); m_Range = reader.ReadSingle(); m_Start = reader.ReadSingle(); int numData = reader.ReadInt32(); m_Data = reader.ReadBytes(numData); reader.AlignStream(4); m_BitSize = reader.ReadByte(); reader.AlignStream(4); }
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); }
/// <summary> /// TextAsset /// </summary> /// <param name="data"></param> public Textasset(byte[] data) { EndianBinaryReader reader = new EndianBinaryReader(new MemoryStream(data), EndianType.LittleEndian); name = reader.ReadAlignedString(); var length = reader.ReadInt32(); bytes = reader.ReadBytes(length); text = Encoding.UTF8.GetString(bytes); reader.AlignStream(4); // m_pathname = reader.ReadAlignedString(); }
public static string ReadAlignedUtf8String(this EndianBinaryReader reader, int length) { // crude failsafe if (length > 0 && length < (reader.BaseStream.Length - reader.BaseStream.Position)) { var stringData = new byte[length]; reader.Read(stringData, 0, length); //must verify strange characters in PS3 var result = Encoding.UTF8.GetString(stringData); reader.AlignStream(4); return(result); } else { return(string.Empty); } }