improved
This commit is contained in:
@@ -9,14 +9,14 @@ namespace AssetStudio
|
||||
{
|
||||
public List<PPtr> m_Animations;
|
||||
|
||||
public Animation(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Animation(ObjectReader reader) : base(reader)
|
||||
{
|
||||
var m_Animation = sourceFile.ReadPPtr();
|
||||
var m_Animation = reader.ReadPPtr();
|
||||
int numAnimations = reader.ReadInt32();
|
||||
m_Animations = new List<PPtr>(numAnimations);
|
||||
for (int i = 0; i < numAnimations; i++)
|
||||
{
|
||||
m_Animations.Add(sourceFile.ReadPPtr());
|
||||
m_Animations.Add(reader.ReadPPtr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,13 @@ namespace AssetStudio
|
||||
public T outWeight { get; set; }
|
||||
|
||||
|
||||
public Keyframe(EndianBinaryReader reader, Func<T> readerFunc, int[] version)
|
||||
public Keyframe(ObjectReader reader, Func<T> readerFunc)
|
||||
{
|
||||
time = reader.ReadSingle();
|
||||
value = readerFunc();
|
||||
inSlope = readerFunc();
|
||||
outSlope = readerFunc();
|
||||
if (version[0] >= 2018)
|
||||
if (reader.version[0] >= 2018)
|
||||
{
|
||||
weightedMode = reader.ReadInt32();
|
||||
inWeight = readerFunc();
|
||||
@@ -41,13 +41,14 @@ namespace AssetStudio
|
||||
public int m_PostInfinity { get; set; }
|
||||
public int m_RotationOrder { get; set; }
|
||||
|
||||
public AnimationCurve(EndianBinaryReader reader, Func<T> readerFunc, int[] version)
|
||||
public AnimationCurve(ObjectReader reader, Func<T> readerFunc)
|
||||
{
|
||||
var version = reader.version;
|
||||
int numCurves = reader.ReadInt32();
|
||||
m_Curve = new List<Keyframe<T>>(numCurves);
|
||||
for (int i = 0; i < numCurves; i++)
|
||||
{
|
||||
m_Curve.Add(new Keyframe<T>(reader, readerFunc, version));
|
||||
m_Curve.Add(new Keyframe<T>(reader, readerFunc));
|
||||
}
|
||||
|
||||
m_PreInfinity = reader.ReadInt32();
|
||||
@@ -64,9 +65,9 @@ namespace AssetStudio
|
||||
public AnimationCurve<Quaternion> curve { get; set; }
|
||||
public string path { get; set; }
|
||||
|
||||
public QuaternionCurve(EndianBinaryReader reader, int[] version)
|
||||
public QuaternionCurve(ObjectReader reader)
|
||||
{
|
||||
curve = new AnimationCurve<Quaternion>(reader, reader.ReadQuaternion, version);
|
||||
curve = new AnimationCurve<Quaternion>(reader, reader.ReadQuaternion);
|
||||
path = reader.ReadAlignedString();
|
||||
}
|
||||
}
|
||||
@@ -79,7 +80,7 @@ namespace AssetStudio
|
||||
public byte[] m_Data { get; set; }
|
||||
public byte m_BitSize { get; set; }
|
||||
|
||||
public PackedFloatVector(EndianBinaryReader reader)
|
||||
public PackedFloatVector(ObjectReader reader)
|
||||
{
|
||||
m_NumItems = reader.ReadUInt32();
|
||||
m_Range = reader.ReadSingle();
|
||||
@@ -138,7 +139,7 @@ namespace AssetStudio
|
||||
public byte[] m_Data { get; set; }
|
||||
public byte m_BitSize { get; set; }
|
||||
|
||||
public PackedIntVector(EndianBinaryReader reader)
|
||||
public PackedIntVector(ObjectReader reader)
|
||||
{
|
||||
m_NumItems = reader.ReadUInt32();
|
||||
|
||||
@@ -182,7 +183,7 @@ namespace AssetStudio
|
||||
public uint m_NumItems { get; set; }
|
||||
public byte[] m_Data { get; set; }
|
||||
|
||||
public PackedQuatVector(EndianBinaryReader reader)
|
||||
public PackedQuatVector(ObjectReader reader)
|
||||
{
|
||||
m_NumItems = reader.ReadUInt32();
|
||||
|
||||
@@ -266,7 +267,7 @@ namespace AssetStudio
|
||||
public int m_PreInfinity { get; set; }
|
||||
public int m_PostInfinity { get; set; }
|
||||
|
||||
public CompressedAnimationCurve(EndianBinaryReader reader)
|
||||
public CompressedAnimationCurve(ObjectReader reader)
|
||||
{
|
||||
m_Path = reader.ReadAlignedString();
|
||||
m_Times = new PackedIntVector(reader);
|
||||
@@ -282,9 +283,9 @@ namespace AssetStudio
|
||||
public AnimationCurve<Vector3> curve { get; set; }
|
||||
public string path { get; set; }
|
||||
|
||||
public Vector3Curve(EndianBinaryReader reader, int[] version)
|
||||
public Vector3Curve(ObjectReader reader)
|
||||
{
|
||||
curve = new AnimationCurve<Vector3>(reader, reader.ReadVector3, version);
|
||||
curve = new AnimationCurve<Vector3>(reader, reader.ReadVector3);
|
||||
path = reader.ReadAlignedString();
|
||||
}
|
||||
}
|
||||
@@ -298,14 +299,13 @@ namespace AssetStudio
|
||||
public PPtr script { get; set; }
|
||||
|
||||
|
||||
public FloatCurve(AssetPreloadData preloadData)
|
||||
public FloatCurve(ObjectReader reader)
|
||||
{
|
||||
var reader = preloadData.sourceFile.reader;
|
||||
curve = new AnimationCurve<float>(reader, reader.ReadSingle, preloadData.sourceFile.version);
|
||||
curve = new AnimationCurve<float>(reader, reader.ReadSingle);
|
||||
attribute = reader.ReadAlignedString();
|
||||
path = reader.ReadAlignedString();
|
||||
classID = reader.ReadInt32();
|
||||
script = preloadData.sourceFile.ReadPPtr();
|
||||
script = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,11 +315,10 @@ namespace AssetStudio
|
||||
public PPtr value { get; set; }
|
||||
|
||||
|
||||
public PPtrKeyframe(AssetPreloadData preloadData)
|
||||
public PPtrKeyframe(ObjectReader reader)
|
||||
{
|
||||
var reader = preloadData.sourceFile.reader;
|
||||
time = reader.ReadSingle();
|
||||
value = preloadData.sourceFile.ReadPPtr();
|
||||
value = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,21 +331,19 @@ namespace AssetStudio
|
||||
public PPtr script { get; set; }
|
||||
|
||||
|
||||
public PPtrCurve(AssetPreloadData preloadData)
|
||||
public PPtrCurve(ObjectReader reader)
|
||||
{
|
||||
var reader = preloadData.sourceFile.reader;
|
||||
|
||||
int numCurves = reader.ReadInt32();
|
||||
curve = new List<PPtrKeyframe>(numCurves);
|
||||
for (int i = 0; i < numCurves; i++)
|
||||
{
|
||||
curve.Add(new PPtrKeyframe(preloadData));
|
||||
curve.Add(new PPtrKeyframe(reader));
|
||||
}
|
||||
|
||||
attribute = reader.ReadAlignedString();
|
||||
path = reader.ReadAlignedString();
|
||||
classID = reader.ReadInt32();
|
||||
script = preloadData.sourceFile.ReadPPtr();
|
||||
script = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,7 +352,7 @@ namespace AssetStudio
|
||||
public Vector3 m_Center { get; set; }
|
||||
public Vector3 m_Extend { get; set; }
|
||||
|
||||
public AABB(EndianBinaryReader reader)
|
||||
public AABB(ObjectReader reader)
|
||||
{
|
||||
m_Center = reader.ReadVector3();
|
||||
m_Extend = reader.ReadVector3();
|
||||
@@ -368,8 +365,9 @@ namespace AssetStudio
|
||||
public Quaternion q { get; set; }
|
||||
public object s { get; set; }
|
||||
|
||||
public xform(EndianBinaryReader reader, int[] version)
|
||||
public xform(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
t = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4();//5.4 and up
|
||||
q = reader.ReadQuaternion();
|
||||
s = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4();//5.4 and up
|
||||
@@ -385,9 +383,9 @@ namespace AssetStudio
|
||||
public float m_InOut { get; set; }
|
||||
public float m_Grab { get; set; }
|
||||
|
||||
public HandPose(EndianBinaryReader reader, int[] version)
|
||||
public HandPose(ObjectReader reader)
|
||||
{
|
||||
m_GrabX = new xform(reader, version);
|
||||
m_GrabX = new xform(reader);
|
||||
|
||||
int numDoFs = reader.ReadInt32();
|
||||
m_DoFArray = reader.ReadSingleArray(numDoFs);
|
||||
@@ -407,9 +405,10 @@ namespace AssetStudio
|
||||
public object m_HintT { get; set; }
|
||||
public float m_HintWeightT { get; set; }
|
||||
|
||||
public HumanGoal(EndianBinaryReader reader, int[] version)
|
||||
public HumanGoal(ObjectReader reader)
|
||||
{
|
||||
m_X = new xform(reader, version);
|
||||
var version = reader.version;
|
||||
m_X = new xform(reader);
|
||||
m_WeightT = reader.ReadSingle();
|
||||
m_WeightR = reader.ReadSingle();
|
||||
if (version[0] >= 5)//5.0 and up
|
||||
@@ -431,9 +430,10 @@ namespace AssetStudio
|
||||
public float[] m_DoFArray { get; set; }
|
||||
public object[] m_TDoFArray { get; set; }
|
||||
|
||||
public HumanPose(EndianBinaryReader reader, int[] version)
|
||||
public HumanPose(ObjectReader reader)
|
||||
{
|
||||
m_RootX = new xform(reader, version);
|
||||
var version = reader.version;
|
||||
m_RootX = new xform(reader);
|
||||
m_LookAtPosition = version[0] > 5 || (version[0] == 5 && version[1] >= 4) ? (object)reader.ReadVector3() : (object)reader.ReadVector4();//5.4 and up
|
||||
m_LookAtWeight = reader.ReadVector4();
|
||||
|
||||
@@ -441,11 +441,11 @@ namespace AssetStudio
|
||||
m_GoalArray = new List<HumanGoal>(numGoals);
|
||||
for (int i = 0; i < numGoals; i++)
|
||||
{
|
||||
m_GoalArray.Add(new HumanGoal(reader, version));
|
||||
m_GoalArray.Add(new HumanGoal(reader));
|
||||
}
|
||||
|
||||
m_LeftHandPose = new HandPose(reader, version);
|
||||
m_RightHandPose = new HandPose(reader, version);
|
||||
m_LeftHandPose = new HandPose(reader);
|
||||
m_RightHandPose = new HandPose(reader);
|
||||
|
||||
int numDoFs = reader.ReadInt32();
|
||||
m_DoFArray = reader.ReadSingleArray(numDoFs);
|
||||
@@ -467,7 +467,7 @@ namespace AssetStudio
|
||||
public uint[] data { get; set; }
|
||||
public uint curveCount { get; set; }
|
||||
|
||||
public StreamedClip(EndianBinaryReader reader)
|
||||
public StreamedClip(ObjectReader reader)
|
||||
{
|
||||
int numData = reader.ReadInt32();
|
||||
data = reader.ReadUInt32Array(numData);
|
||||
@@ -570,7 +570,7 @@ namespace AssetStudio
|
||||
public float m_BeginTime { get; set; }
|
||||
public float[] m_SampleArray { get; set; }
|
||||
|
||||
public DenseClip(EndianBinaryReader reader)
|
||||
public DenseClip(ObjectReader reader)
|
||||
{
|
||||
m_FrameCount = reader.ReadInt32();
|
||||
m_CurveCount = reader.ReadUInt32();
|
||||
@@ -586,7 +586,7 @@ namespace AssetStudio
|
||||
{
|
||||
public float[] data { get; set; }
|
||||
|
||||
public ConstantClip(EndianBinaryReader reader)
|
||||
public ConstantClip(ObjectReader reader)
|
||||
{
|
||||
int numData = reader.ReadInt32();
|
||||
data = reader.ReadSingleArray(numData);
|
||||
@@ -600,8 +600,9 @@ namespace AssetStudio
|
||||
public uint m_Type { get; set; }
|
||||
public uint m_Index { get; set; }
|
||||
|
||||
public ValueConstant(EndianBinaryReader reader, int[] version)
|
||||
public ValueConstant(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
m_ID = reader.ReadUInt32();
|
||||
if (version[0] < 5 || (version[0] == 5 && version[1] < 5))//5.5 down
|
||||
{
|
||||
@@ -616,13 +617,13 @@ namespace AssetStudio
|
||||
{
|
||||
public List<ValueConstant> m_ValueArray { get; set; }
|
||||
|
||||
public ValueArrayConstant(EndianBinaryReader reader, int[] version)
|
||||
public ValueArrayConstant(ObjectReader reader)
|
||||
{
|
||||
int numVals = reader.ReadInt32();
|
||||
m_ValueArray = new List<ValueConstant>(numVals);
|
||||
for (int i = 0; i < numVals; i++)
|
||||
{
|
||||
m_ValueArray.Add(new ValueConstant(reader, version));
|
||||
m_ValueArray.Add(new ValueConstant(reader));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -634,15 +635,16 @@ namespace AssetStudio
|
||||
public ConstantClip m_ConstantClip { get; set; }
|
||||
public ValueArrayConstant m_Binding { get; set; }
|
||||
|
||||
public Clip(EndianBinaryReader reader, int[] version)
|
||||
public Clip(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
m_StreamedClip = new StreamedClip(reader);
|
||||
m_DenseClip = new DenseClip(reader);
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
|
||||
{
|
||||
m_ConstantClip = new ConstantClip(reader);
|
||||
}
|
||||
m_Binding = new ValueArrayConstant(reader, version);
|
||||
m_Binding = new ValueArrayConstant(reader);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -651,7 +653,7 @@ namespace AssetStudio
|
||||
public float m_Start { get; set; }
|
||||
public float m_Stop { get; set; }
|
||||
|
||||
public ValueDelta(EndianBinaryReader reader)
|
||||
public ValueDelta(ObjectReader reader)
|
||||
{
|
||||
m_Start = reader.ReadSingle();
|
||||
m_Stop = reader.ReadSingle();
|
||||
@@ -690,23 +692,24 @@ namespace AssetStudio
|
||||
public bool m_KeepOriginalPositionXZ { get; set; }
|
||||
public bool m_HeightFromFeet { get; set; }
|
||||
|
||||
public ClipMuscleConstant(EndianBinaryReader reader, int[] version)
|
||||
public ClipMuscleConstant(ObjectReader reader)
|
||||
{
|
||||
m_DeltaPose = new HumanPose(reader, version);
|
||||
m_StartX = new xform(reader, version);
|
||||
var version = reader.version;
|
||||
m_DeltaPose = new HumanPose(reader);
|
||||
m_StartX = new xform(reader);
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 5))//5.5 and up
|
||||
{
|
||||
m_StopX = new xform(reader, version);
|
||||
m_StopX = new xform(reader);
|
||||
}
|
||||
m_LeftFootStartX = new xform(reader, version);
|
||||
m_RightFootStartX = new xform(reader, version);
|
||||
m_LeftFootStartX = new xform(reader);
|
||||
m_RightFootStartX = new xform(reader);
|
||||
if (version[0] < 5)//5.0 down
|
||||
{
|
||||
m_MotionStartX = new xform(reader, version);
|
||||
m_MotionStopX = new xform(reader, version);
|
||||
m_MotionStartX = new xform(reader);
|
||||
m_MotionStopX = new xform(reader);
|
||||
}
|
||||
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_Clip = new Clip(reader);
|
||||
m_StartTime = reader.ReadSingle();
|
||||
m_StopTime = reader.ReadSingle();
|
||||
m_OrientationOffsetY = reader.ReadSingle();
|
||||
@@ -763,13 +766,12 @@ namespace AssetStudio
|
||||
public byte customType { get; set; }
|
||||
public byte isPPtrCurve { get; set; }
|
||||
|
||||
public GenericBinding(AssetPreloadData preloadData)
|
||||
public GenericBinding(ObjectReader reader)
|
||||
{
|
||||
var reader = preloadData.sourceFile.reader;
|
||||
var version = preloadData.sourceFile.version;
|
||||
var version = reader.version;
|
||||
path = reader.ReadUInt32();
|
||||
attribute = reader.ReadUInt32();
|
||||
script = preloadData.sourceFile.ReadPPtr();
|
||||
script = reader.ReadPPtr();
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up
|
||||
{
|
||||
typeID = reader.ReadInt32();
|
||||
@@ -789,21 +791,20 @@ namespace AssetStudio
|
||||
public List<GenericBinding> genericBindings { get; set; }
|
||||
public List<PPtr> pptrCurveMapping { get; set; }
|
||||
|
||||
public AnimationClipBindingConstant(AssetPreloadData preloadData)
|
||||
public AnimationClipBindingConstant(ObjectReader reader)
|
||||
{
|
||||
var reader = preloadData.sourceFile.reader;
|
||||
int numBindings = reader.ReadInt32();
|
||||
genericBindings = new List<GenericBinding>(numBindings);
|
||||
for (int i = 0; i < numBindings; i++)
|
||||
{
|
||||
genericBindings.Add(new GenericBinding(preloadData));
|
||||
genericBindings.Add(new GenericBinding(reader));
|
||||
}
|
||||
|
||||
int numMappings = reader.ReadInt32();
|
||||
pptrCurveMapping = new List<PPtr>(numMappings);
|
||||
for (int i = 0; i < numMappings; i++)
|
||||
{
|
||||
pptrCurveMapping.Add(preloadData.sourceFile.ReadPPtr());
|
||||
pptrCurveMapping.Add(reader.ReadPPtr());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -852,7 +853,7 @@ namespace AssetStudio
|
||||
//public List<AnimationEvent> m_Events { get; set; }
|
||||
|
||||
|
||||
public AnimationClip(AssetPreloadData preloadData) : base(preloadData)
|
||||
public AnimationClip(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (version[0] >= 5)//5.0 and up
|
||||
{
|
||||
@@ -878,7 +879,7 @@ namespace AssetStudio
|
||||
m_RotationCurves = new List<QuaternionCurve>(numRCurves);
|
||||
for (int i = 0; i < numRCurves; i++)
|
||||
{
|
||||
m_RotationCurves.Add(new QuaternionCurve(reader, version));
|
||||
m_RotationCurves.Add(new QuaternionCurve(reader));
|
||||
}
|
||||
|
||||
int numCRCurves = reader.ReadInt32();
|
||||
@@ -894,7 +895,7 @@ namespace AssetStudio
|
||||
m_EulerCurves = new List<Vector3Curve>(numEulerCurves);
|
||||
for (int i = 0; i < numEulerCurves; i++)
|
||||
{
|
||||
m_EulerCurves.Add(new Vector3Curve(reader, version));
|
||||
m_EulerCurves.Add(new Vector3Curve(reader));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -902,21 +903,21 @@ namespace AssetStudio
|
||||
m_PositionCurves = new List<Vector3Curve>(numPCurves);
|
||||
for (int i = 0; i < numPCurves; i++)
|
||||
{
|
||||
m_PositionCurves.Add(new Vector3Curve(reader, version));
|
||||
m_PositionCurves.Add(new Vector3Curve(reader));
|
||||
}
|
||||
|
||||
int numSCurves = reader.ReadInt32();
|
||||
m_ScaleCurves = new List<Vector3Curve>(numSCurves);
|
||||
for (int i = 0; i < numSCurves; i++)
|
||||
{
|
||||
m_ScaleCurves.Add(new Vector3Curve(reader, version));
|
||||
m_ScaleCurves.Add(new Vector3Curve(reader));
|
||||
}
|
||||
|
||||
int numFCurves = reader.ReadInt32();
|
||||
m_FloatCurves = new List<FloatCurve>(numFCurves);
|
||||
for (int i = 0; i < numFCurves; i++)
|
||||
{
|
||||
m_FloatCurves.Add(new FloatCurve(preloadData));
|
||||
m_FloatCurves.Add(new FloatCurve(reader));
|
||||
}
|
||||
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
|
||||
@@ -925,7 +926,7 @@ namespace AssetStudio
|
||||
m_PPtrCurves = new List<PPtrCurve>(numPtrCurves);
|
||||
for (int i = 0; i < numPtrCurves; i++)
|
||||
{
|
||||
m_PPtrCurves.Add(new PPtrCurve(preloadData));
|
||||
m_PPtrCurves.Add(new PPtrCurve(reader));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -938,11 +939,11 @@ namespace AssetStudio
|
||||
if (version[0] >= 4)//4.0 and up
|
||||
{
|
||||
m_MuscleClipSize = reader.ReadUInt32();
|
||||
m_MuscleClip = new ClipMuscleConstant(reader, version);
|
||||
m_MuscleClip = new ClipMuscleConstant(reader);
|
||||
}
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
|
||||
{
|
||||
m_ClipBindingConstant = new AnimationClipBindingConstant(preloadData);
|
||||
m_ClipBindingConstant = new AnimationClipBindingConstant(reader);
|
||||
}
|
||||
/*int numEvents = reader.ReadInt32();
|
||||
m_Events = new List<AnimationEvent>(numEvents);
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace AssetStudio
|
||||
public PPtr m_Controller;
|
||||
public bool m_HasTransformHierarchy;
|
||||
|
||||
public Animator(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Animator(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Avatar = sourceFile.ReadPPtr();
|
||||
m_Controller = sourceFile.ReadPPtr();
|
||||
m_Avatar = reader.ReadPPtr();
|
||||
m_Controller = reader.ReadPPtr();
|
||||
var m_CullingMode = reader.ReadInt32();
|
||||
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 5)) //4.5 and up
|
||||
|
||||
@@ -12,11 +12,11 @@ namespace AssetStudio
|
||||
public uint word1 { get; set; }
|
||||
public uint word2 { get; set; }
|
||||
|
||||
public HumanPoseMask(EndianBinaryReader reader, int[] version)
|
||||
public HumanPoseMask(ObjectReader reader)
|
||||
{
|
||||
word0 = reader.ReadUInt32();
|
||||
word1 = reader.ReadUInt32();
|
||||
if (version[0] >= 5) //5.0 and up
|
||||
if (reader.version[0] >= 5) //5.0 and up
|
||||
{
|
||||
word2 = reader.ReadUInt32();
|
||||
}
|
||||
@@ -28,7 +28,7 @@ namespace AssetStudio
|
||||
public uint m_PathHash { get; set; }
|
||||
public float m_Weight { get; set; }
|
||||
|
||||
public SkeletonMaskElement(EndianBinaryReader reader)
|
||||
public SkeletonMaskElement(ObjectReader reader)
|
||||
{
|
||||
m_PathHash = reader.ReadUInt32();
|
||||
m_Weight = reader.ReadSingle();
|
||||
@@ -39,7 +39,7 @@ namespace AssetStudio
|
||||
{
|
||||
public SkeletonMaskElement[] m_Data { get; set; }
|
||||
|
||||
public SkeletonMask(EndianBinaryReader reader)
|
||||
public SkeletonMask(ObjectReader reader)
|
||||
{
|
||||
int numElements = reader.ReadInt32();
|
||||
m_Data = new SkeletonMaskElement[numElements];
|
||||
@@ -62,11 +62,11 @@ namespace AssetStudio
|
||||
public bool m_IKPass { get; set; }
|
||||
public bool m_SyncedLayerAffectsTiming { get; set; }
|
||||
|
||||
public LayerConstant(EndianBinaryReader reader, int[] version)
|
||||
public LayerConstant(ObjectReader reader)
|
||||
{
|
||||
m_StateMachineIndex = reader.ReadUInt32();
|
||||
m_StateMachineMotionSetIndex = reader.ReadUInt32();
|
||||
m_BodyMask = new HumanPoseMask(reader, version);
|
||||
m_BodyMask = new HumanPoseMask(reader);
|
||||
m_SkeletonMask = new SkeletonMask(reader);
|
||||
m_Binding = reader.ReadUInt32();
|
||||
m_LayerBlendingMode = reader.ReadInt32();
|
||||
@@ -84,7 +84,7 @@ namespace AssetStudio
|
||||
public float m_EventThreshold { get; set; }
|
||||
public float m_ExitTime { get; set; }
|
||||
|
||||
public ConditionConstant(EndianBinaryReader reader)
|
||||
public ConditionConstant(ObjectReader reader)
|
||||
{
|
||||
m_ConditionMode = reader.ReadUInt32();
|
||||
m_EventID = reader.ReadUInt32();
|
||||
@@ -110,8 +110,9 @@ namespace AssetStudio
|
||||
public bool m_Atomic { get; set; }
|
||||
public bool m_CanTransitionToSelf { get; set; }
|
||||
|
||||
public TransitionConstant(EndianBinaryReader reader, int[] version)
|
||||
public TransitionConstant(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
int numConditions = reader.ReadInt32();
|
||||
m_ConditionConstantArray = new ConditionConstant[numConditions];
|
||||
for (int i = 0; i < numConditions; i++)
|
||||
@@ -153,7 +154,7 @@ namespace AssetStudio
|
||||
public uint[] m_IDArray { get; set; }
|
||||
public uint m_IndexOffset { get; set; }
|
||||
|
||||
public LeafInfoConstant(EndianBinaryReader reader)
|
||||
public LeafInfoConstant(ObjectReader reader)
|
||||
{
|
||||
m_IDArray = reader.ReadUInt32Array(reader.ReadInt32());
|
||||
m_IndexOffset = reader.ReadUInt32();
|
||||
@@ -164,7 +165,7 @@ namespace AssetStudio
|
||||
{
|
||||
public uint[] m_NeighborArray { get; set; }
|
||||
|
||||
public MotionNeighborList(EndianBinaryReader reader)
|
||||
public MotionNeighborList(ObjectReader reader)
|
||||
{
|
||||
m_NeighborArray = reader.ReadUInt32Array(reader.ReadInt32());
|
||||
}
|
||||
@@ -178,7 +179,7 @@ namespace AssetStudio
|
||||
public float[] m_ChildPairAvgMagInvArray { get; set; }
|
||||
public MotionNeighborList[] m_ChildNeighborListArray { get; set; }
|
||||
|
||||
public Blend2dDataConstant(EndianBinaryReader reader)
|
||||
public Blend2dDataConstant(ObjectReader reader)
|
||||
{
|
||||
m_ChildPositionArray = reader.ReadVector2Array(reader.ReadInt32());
|
||||
m_ChildMagnitudeArray = reader.ReadSingleArray(reader.ReadInt32());
|
||||
@@ -198,7 +199,7 @@ namespace AssetStudio
|
||||
{
|
||||
public float[] m_ChildThresholdArray { get; set; }
|
||||
|
||||
public Blend1dDataConstant(EndianBinaryReader reader)
|
||||
public Blend1dDataConstant(ObjectReader reader)
|
||||
{
|
||||
m_ChildThresholdArray = reader.ReadSingleArray(reader.ReadInt32());
|
||||
}
|
||||
@@ -209,7 +210,7 @@ namespace AssetStudio
|
||||
public uint[] m_ChildBlendEventIDArray { get; set; }
|
||||
public bool m_NormalizedBlendValues { get; set; }
|
||||
|
||||
public BlendDirectDataConstant(EndianBinaryReader reader)
|
||||
public BlendDirectDataConstant(ObjectReader reader)
|
||||
{
|
||||
m_ChildBlendEventIDArray = reader.ReadUInt32Array(reader.ReadInt32());
|
||||
m_NormalizedBlendValues = reader.ReadBoolean();
|
||||
@@ -232,8 +233,9 @@ namespace AssetStudio
|
||||
public float m_CycleOffset { get; set; }
|
||||
public bool m_Mirror { get; set; }
|
||||
|
||||
public BlendTreeNodeConstant(EndianBinaryReader reader, int[] version)
|
||||
public BlendTreeNodeConstant(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
m_BlendType = reader.ReadUInt32();
|
||||
m_BlendEventID = reader.ReadUInt32();
|
||||
m_BlendEventYID = reader.ReadUInt32();
|
||||
@@ -262,13 +264,13 @@ namespace AssetStudio
|
||||
{
|
||||
public BlendTreeNodeConstant[] m_NodeArray { get; set; }
|
||||
|
||||
public BlendTreeConstant(EndianBinaryReader reader, int[] version)
|
||||
public BlendTreeConstant(ObjectReader reader)
|
||||
{
|
||||
int numNodes = reader.ReadInt32();
|
||||
m_NodeArray = new BlendTreeNodeConstant[numNodes];
|
||||
for (int i = 0; i < numNodes; i++)
|
||||
{
|
||||
m_NodeArray[i] = new BlendTreeNodeConstant(reader, version);
|
||||
m_NodeArray[i] = new BlendTreeNodeConstant(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -294,13 +296,14 @@ namespace AssetStudio
|
||||
public bool m_Loop { get; set; }
|
||||
public bool m_Mirror { get; set; }
|
||||
|
||||
public StateConstant(EndianBinaryReader reader, int[] version)
|
||||
public StateConstant(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
int numTransistions = reader.ReadInt32();
|
||||
m_TransitionConstantArray = new TransitionConstant[numTransistions];
|
||||
for (int i = 0; i < numTransistions; i++)
|
||||
{
|
||||
m_TransitionConstantArray[i] = new TransitionConstant(reader, version);
|
||||
m_TransitionConstantArray[i] = new TransitionConstant(reader);
|
||||
}
|
||||
|
||||
int numBlendIndices = reader.ReadInt32();
|
||||
@@ -324,7 +327,7 @@ namespace AssetStudio
|
||||
m_BlendTreeConstantArray = new BlendTreeConstant[numBlends];
|
||||
for (int i = 0; i < numBlends; i++)
|
||||
{
|
||||
m_BlendTreeConstantArray[i] = new BlendTreeConstant(reader, version);
|
||||
m_BlendTreeConstantArray[i] = new BlendTreeConstant(reader);
|
||||
}
|
||||
|
||||
m_NameID = reader.ReadUInt32();
|
||||
@@ -366,7 +369,7 @@ namespace AssetStudio
|
||||
public uint m_Destination { get; set; }
|
||||
public ConditionConstant[] m_ConditionConstantArray { get; set; }
|
||||
|
||||
public SelectorTransitionConstant(EndianBinaryReader reader)
|
||||
public SelectorTransitionConstant(ObjectReader reader)
|
||||
{
|
||||
m_Destination = reader.ReadUInt32();
|
||||
|
||||
@@ -385,7 +388,7 @@ namespace AssetStudio
|
||||
public uint m_FullPathID { get; set; }
|
||||
public bool m_isEntry { get; set; }
|
||||
|
||||
public SelectorStateConstant(EndianBinaryReader reader)
|
||||
public SelectorStateConstant(ObjectReader reader)
|
||||
{
|
||||
int numTransitions = reader.ReadInt32();
|
||||
m_TransitionConstantArray = new SelectorTransitionConstant[numTransitions];
|
||||
@@ -408,20 +411,21 @@ namespace AssetStudio
|
||||
public uint m_DefaultState { get; set; }
|
||||
public uint m_MotionSetCount { get; set; }
|
||||
|
||||
public StateMachineConstant(EndianBinaryReader reader, int[] version)
|
||||
public StateMachineConstant(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
int numStates = reader.ReadInt32();
|
||||
m_StateConstantArray = new StateConstant[numStates];
|
||||
for (int i = 0; i < numStates; i++)
|
||||
{
|
||||
m_StateConstantArray[i] = new StateConstant(reader, version);
|
||||
m_StateConstantArray[i] = new StateConstant(reader);
|
||||
}
|
||||
|
||||
int numAnyStates = reader.ReadInt32();
|
||||
m_AnyStateTransitionConstantArray = new TransitionConstant[numAnyStates];
|
||||
for (int i = 0; i < numAnyStates; i++)
|
||||
{
|
||||
m_AnyStateTransitionConstantArray[i] = new TransitionConstant(reader, version);
|
||||
m_AnyStateTransitionConstantArray[i] = new TransitionConstant(reader);
|
||||
}
|
||||
|
||||
if (version[0] >= 5) //5.0 and up
|
||||
@@ -448,8 +452,9 @@ namespace AssetStudio
|
||||
public Vector4[] m_QuaternionValues { get; set; }
|
||||
public object[] m_ScaleValues { get; set; }
|
||||
|
||||
public ValueArray(EndianBinaryReader reader, int[] version)
|
||||
public ValueArray(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
if (version[0] < 5 || (version[0] == 5 && version[1] < 5)) //5.5 down
|
||||
{
|
||||
int numBools = reader.ReadInt32();
|
||||
@@ -505,24 +510,24 @@ namespace AssetStudio
|
||||
public ValueArrayConstant m_Values { get; set; }
|
||||
public ValueArray m_DefaultValues { get; set; }
|
||||
|
||||
public ControllerConstant(EndianBinaryReader reader, int[] version)
|
||||
public ControllerConstant(ObjectReader reader)
|
||||
{
|
||||
int numLayers = reader.ReadInt32();
|
||||
m_LayerArray = new LayerConstant[numLayers];
|
||||
for (int i = 0; i < numLayers; i++)
|
||||
{
|
||||
m_LayerArray[i] = new LayerConstant(reader, version);
|
||||
m_LayerArray[i] = new LayerConstant(reader);
|
||||
}
|
||||
|
||||
int numStates = reader.ReadInt32();
|
||||
m_StateMachineArray = new StateMachineConstant[numStates];
|
||||
for (int i = 0; i < numStates; i++)
|
||||
{
|
||||
m_StateMachineArray[i] = new StateMachineConstant(reader, version);
|
||||
m_StateMachineArray[i] = new StateMachineConstant(reader);
|
||||
}
|
||||
|
||||
m_Values = new ValueArrayConstant(reader, version);
|
||||
m_DefaultValues = new ValueArray(reader, version);
|
||||
m_Values = new ValueArrayConstant(reader);
|
||||
m_DefaultValues = new ValueArray(reader);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -530,10 +535,10 @@ namespace AssetStudio
|
||||
{
|
||||
public PPtr[] m_AnimationClips;
|
||||
|
||||
public AnimatorController(AssetPreloadData preloadData) : base(preloadData)
|
||||
public AnimatorController(ObjectReader reader) : base(reader)
|
||||
{
|
||||
var m_ControllerSize = reader.ReadUInt32();
|
||||
var m_Controller = new ControllerConstant(reader, version);
|
||||
var m_Controller = new ControllerConstant(reader);
|
||||
|
||||
int tosSize = reader.ReadInt32();
|
||||
var m_TOS = new List<KeyValuePair<uint, string>>(tosSize);
|
||||
@@ -546,7 +551,7 @@ namespace AssetStudio
|
||||
m_AnimationClips = new PPtr[numClips];
|
||||
for (int i = 0; i < numClips; i++)
|
||||
{
|
||||
m_AnimationClips[i] = sourceFile.ReadPPtr();
|
||||
m_AnimationClips[i] = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,17 +10,17 @@ namespace AssetStudio
|
||||
public PPtr m_Controller;
|
||||
public PPtr[][] m_Clips;
|
||||
|
||||
public AnimatorOverrideController(AssetPreloadData preloadData) : base(preloadData)
|
||||
public AnimatorOverrideController(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Controller = sourceFile.ReadPPtr();
|
||||
m_Controller = reader.ReadPPtr();
|
||||
|
||||
int numOverrides = reader.ReadInt32();
|
||||
m_Clips = new PPtr[numOverrides][];
|
||||
for (int i = 0; i < numOverrides; i++)
|
||||
{
|
||||
m_Clips[i] = new PPtr[2];
|
||||
m_Clips[i][0] = sourceFile.ReadPPtr();
|
||||
m_Clips[i][1] = sourceFile.ReadPPtr();
|
||||
m_Clips[i][0] = reader.ReadPPtr();
|
||||
m_Clips[i][1] = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@ namespace AssetStudio
|
||||
|
||||
public List<ContainerData> m_Container = new List<ContainerData>();
|
||||
|
||||
public AssetBundle(AssetPreloadData preloadData) : base(preloadData)
|
||||
public AssetBundle(ObjectReader reader) : base(reader)
|
||||
{
|
||||
var size = reader.ReadInt32();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
sourceFile.ReadPPtr();
|
||||
reader.ReadPPtr();
|
||||
}
|
||||
size = reader.ReadInt32();
|
||||
for (int i = 0; i < size; i++)
|
||||
@@ -38,7 +38,7 @@ namespace AssetStudio
|
||||
temp.second = new AssetInfo();
|
||||
temp.second.preloadIndex = reader.ReadInt32();
|
||||
temp.second.preloadSize = reader.ReadInt32();
|
||||
temp.second.asset = sourceFile.ReadPPtr();
|
||||
temp.second.asset = reader.ReadPPtr();
|
||||
m_Container.Add(temp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace AssetStudio
|
||||
public long m_Size;
|
||||
public byte[] m_AudioData;
|
||||
|
||||
public AudioClip(AssetPreloadData preloadData, bool readData) : base(preloadData)
|
||||
public AudioClip(ObjectReader reader, bool readData) : base(reader)
|
||||
{
|
||||
if (version[0] < 5)
|
||||
{
|
||||
@@ -46,7 +46,7 @@ namespace AssetStudio
|
||||
int m_Stream = reader.ReadInt32();
|
||||
m_Size = reader.ReadInt32();
|
||||
var tsize = m_Size % 4 != 0 ? m_Size + 4 - m_Size % 4 : m_Size;
|
||||
if (preloadData.Size + preloadData.Offset - reader.Position != tsize)
|
||||
if (reader.byteSize + reader.byteStart - reader.Position != tsize)
|
||||
{
|
||||
m_Offset = reader.ReadInt32();
|
||||
m_Source = sourceFile.filePath + ".resS";
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace AssetStudio
|
||||
public int m_ParentId { get; set; }
|
||||
public int m_AxesId { get; set; }
|
||||
|
||||
public Node(EndianBinaryReader reader)
|
||||
public Node(ObjectReader reader)
|
||||
{
|
||||
m_ParentId = reader.ReadInt32();
|
||||
m_AxesId = reader.ReadInt32();
|
||||
@@ -20,8 +20,9 @@ namespace AssetStudio
|
||||
public object m_Min { get; set; }
|
||||
public object m_Max { get; set; }
|
||||
|
||||
public Limit(EndianBinaryReader reader, int[] version)
|
||||
public Limit(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 4))//5.4 and up
|
||||
{
|
||||
m_Min = reader.ReadVector3();
|
||||
@@ -44,8 +45,9 @@ namespace AssetStudio
|
||||
public float m_Length { get; set; }
|
||||
public uint m_Type { get; set; }
|
||||
|
||||
public Axes(EndianBinaryReader reader, int[] version)
|
||||
public Axes(ObjectReader reader)
|
||||
{
|
||||
var version = reader.version;
|
||||
m_PreQ = reader.ReadVector4();
|
||||
m_PostQ = reader.ReadVector4();
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) //5.4 and up
|
||||
@@ -56,7 +58,7 @@ namespace AssetStudio
|
||||
{
|
||||
m_Sgn = reader.ReadVector4();
|
||||
}
|
||||
m_Limit = new Limit(reader, version);
|
||||
m_Limit = new Limit(reader);
|
||||
m_Length = reader.ReadSingle();
|
||||
m_Type = reader.ReadUInt32();
|
||||
}
|
||||
@@ -69,7 +71,7 @@ namespace AssetStudio
|
||||
public List<Axes> m_AxesArray { get; set; }
|
||||
|
||||
|
||||
public Skeleton(EndianBinaryReader reader, int[] version)
|
||||
public Skeleton(ObjectReader reader)
|
||||
{
|
||||
int numNodes = reader.ReadInt32();
|
||||
m_Node = new List<Node>(numNodes);
|
||||
@@ -89,7 +91,7 @@ namespace AssetStudio
|
||||
m_AxesArray = new List<Axes>(numAxes);
|
||||
for (int i = 0; i < numAxes; i++)
|
||||
{
|
||||
m_AxesArray.Add(new Axes(reader, version));
|
||||
m_AxesArray.Add(new Axes(reader));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,13 +105,13 @@ namespace AssetStudio
|
||||
m_X = new List<xform>();
|
||||
}
|
||||
|
||||
public SkeletonPose(EndianBinaryReader reader, int[] version)
|
||||
public SkeletonPose(ObjectReader reader)
|
||||
{
|
||||
int numXforms = reader.ReadInt32();
|
||||
m_X = new List<xform>(numXforms);
|
||||
for (int i = 0; i < numXforms; i++)
|
||||
{
|
||||
m_X.Add(new xform(reader, version));
|
||||
m_X.Add(new xform(reader));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,7 +120,7 @@ namespace AssetStudio
|
||||
{
|
||||
public List<int> m_HandBoneIndex { get; set; }
|
||||
|
||||
public Hand(EndianBinaryReader reader)
|
||||
public Hand(ObjectReader reader)
|
||||
{
|
||||
int numIndexes = reader.ReadInt32();
|
||||
m_HandBoneIndex = new List<int>(numIndexes);
|
||||
@@ -135,9 +137,9 @@ namespace AssetStudio
|
||||
public uint m_ParentHumanIndex { get; set; }
|
||||
public uint m_ID { get; set; }
|
||||
|
||||
public Handle(EndianBinaryReader reader, int[] version)
|
||||
public Handle(ObjectReader reader)
|
||||
{
|
||||
m_X = new xform(reader, version);
|
||||
m_X = new xform(reader);
|
||||
m_ParentHumanIndex = reader.ReadUInt32();
|
||||
m_ID = reader.ReadUInt32();
|
||||
}
|
||||
@@ -155,9 +157,9 @@ namespace AssetStudio
|
||||
public float m_MaxLimitY { get; set; }
|
||||
public float m_MaxLimitZ { get; set; }
|
||||
|
||||
public Collider(EndianBinaryReader reader, int[] version)
|
||||
public Collider(ObjectReader reader)
|
||||
{
|
||||
m_X = new xform(reader, version);
|
||||
m_X = new xform(reader);
|
||||
m_Type = reader.ReadUInt32();
|
||||
m_XMotionType = reader.ReadUInt32();
|
||||
m_YMotionType = reader.ReadUInt32();
|
||||
@@ -193,11 +195,12 @@ namespace AssetStudio
|
||||
public bool m_HasRightHand { get; set; }
|
||||
public bool m_HasTDoF { get; set; }
|
||||
|
||||
public Human(EndianBinaryReader reader, int[] version)
|
||||
public Human(ObjectReader reader)
|
||||
{
|
||||
m_RootX = new xform(reader, version);
|
||||
m_Skeleton = new Skeleton(reader, version);
|
||||
m_SkeletonPose = new SkeletonPose(reader, version);
|
||||
var version = reader.version;
|
||||
m_RootX = new xform(reader);
|
||||
m_Skeleton = new Skeleton(reader);
|
||||
m_SkeletonPose = new SkeletonPose(reader);
|
||||
m_LeftHand = new Hand(reader);
|
||||
m_RightHand = new Hand(reader);
|
||||
|
||||
@@ -207,14 +210,14 @@ namespace AssetStudio
|
||||
m_Handles = new List<Handle>(numHandles);
|
||||
for (int i = 0; i < numHandles; i++)
|
||||
{
|
||||
m_Handles.Add(new Handle(reader, version));
|
||||
m_Handles.Add(new Handle(reader));
|
||||
}
|
||||
|
||||
int numColliders = reader.ReadInt32();
|
||||
m_ColliderArray = new List<Collider>(numColliders);
|
||||
for (int i = 0; i < numColliders; i++)
|
||||
{
|
||||
m_ColliderArray.Add(new Collider(reader, version));
|
||||
m_ColliderArray.Add(new Collider(reader));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,14 +275,15 @@ namespace AssetStudio
|
||||
public SkeletonPose m_RootMotionSkeletonPose { get; set; }
|
||||
public List<int> m_RootMotionSkeletonIndexArray { get; set; }
|
||||
|
||||
public AvatarConstant(EndianBinaryReader reader, int[] version)
|
||||
public AvatarConstant(ObjectReader reader)
|
||||
{
|
||||
m_AvatarSkeleton = new Skeleton(reader, version);
|
||||
m_AvatarSkeletonPose = new SkeletonPose(reader, version);
|
||||
var version = reader.version;
|
||||
m_AvatarSkeleton = new Skeleton(reader);
|
||||
m_AvatarSkeletonPose = new SkeletonPose(reader);
|
||||
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
|
||||
{
|
||||
m_DefaultPose = new SkeletonPose(reader, version);
|
||||
m_DefaultPose = new SkeletonPose(reader);
|
||||
int numIDs = reader.ReadInt32();
|
||||
m_SkeletonNameIDArray = new List<uint>(numIDs);
|
||||
for (int i = 0; i < numIDs; i++)
|
||||
@@ -288,7 +292,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
m_Human = new Human(reader, version);
|
||||
m_Human = new Human(reader);
|
||||
|
||||
int numIndexes = reader.ReadInt32();
|
||||
m_HumanSkeletonIndexArray = new List<int>(numIndexes);
|
||||
@@ -308,12 +312,12 @@ namespace AssetStudio
|
||||
}
|
||||
|
||||
m_RootMotionBoneIndex = reader.ReadInt32();
|
||||
m_RootMotionBoneX = new xform(reader, version);
|
||||
m_RootMotionBoneX = new xform(reader);
|
||||
|
||||
if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
|
||||
{
|
||||
m_RootMotionSkeleton = new Skeleton(reader, version);
|
||||
m_RootMotionSkeletonPose = new SkeletonPose(reader, version);
|
||||
m_RootMotionSkeleton = new Skeleton(reader);
|
||||
m_RootMotionSkeletonPose = new SkeletonPose(reader);
|
||||
|
||||
int numMotionIndexes = reader.ReadInt32();
|
||||
m_RootMotionSkeletonIndexArray = new List<int>(numMotionIndexes);
|
||||
@@ -331,10 +335,10 @@ namespace AssetStudio
|
||||
public AvatarConstant m_Avatar { get; set; }
|
||||
public List<KeyValuePair<uint, string>> m_TOS { get; set; }
|
||||
|
||||
public Avatar(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Avatar(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_AvatarSize = reader.ReadUInt32();
|
||||
m_Avatar = new AvatarConstant(reader, version);
|
||||
m_Avatar = new AvatarConstant(reader);
|
||||
|
||||
int numTOS = reader.ReadInt32();
|
||||
m_TOS = new List<KeyValuePair<uint, string>>(numTOS);
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace AssetStudio
|
||||
{
|
||||
public byte m_Enabled;
|
||||
|
||||
protected Behaviour(AssetPreloadData preloadData) : base(preloadData)
|
||||
protected Behaviour(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Enabled = reader.ReadByte();
|
||||
reader.AlignStream(4);
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace AssetStudio
|
||||
{
|
||||
public string m_Version;
|
||||
|
||||
public BuildSettings(AssetPreloadData preloadData) : base(preloadData)
|
||||
public BuildSettings(ObjectReader reader) : base(reader)
|
||||
{
|
||||
int levelsNum = reader.ReadInt32();
|
||||
for (int i = 0; i < levelsNum; i++)
|
||||
|
||||
@@ -9,9 +9,9 @@ namespace AssetStudio
|
||||
{
|
||||
public PPtr m_GameObject;
|
||||
|
||||
protected Component(AssetPreloadData preloadData) : base(preloadData)
|
||||
protected Component(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_GameObject = sourceFile.ReadPPtr();
|
||||
m_GameObject = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,12 +7,12 @@ namespace AssetStudio
|
||||
{
|
||||
public abstract class EditorExtension : Object
|
||||
{
|
||||
protected EditorExtension(AssetPreloadData preloadData) : base(preloadData)
|
||||
protected EditorExtension(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (platform == BuildTarget.NoTarget)
|
||||
{
|
||||
var m_PrefabParentObject = sourceFile.ReadPPtr();
|
||||
var m_PrefabInternal = sourceFile.ReadPPtr();
|
||||
var m_PrefabParentObject = reader.ReadPPtr();
|
||||
var m_PrefabInternal = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,14 @@ namespace AssetStudio
|
||||
{
|
||||
public byte[] m_FontData;
|
||||
|
||||
public Font(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Font(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5 and up
|
||||
{
|
||||
var m_LineSpacing = reader.ReadSingle();
|
||||
var m_DefaultMaterial = sourceFile.ReadPPtr();
|
||||
var m_DefaultMaterial = reader.ReadPPtr();
|
||||
var m_FontSize = reader.ReadSingle();
|
||||
var m_Texture = sourceFile.ReadPPtr();
|
||||
var m_Texture = reader.ReadPPtr();
|
||||
int m_AsciiStartOffset = reader.ReadInt32();
|
||||
var m_Tracking = reader.ReadSingle();
|
||||
var m_CharacterSpacing = reader.ReadInt32();
|
||||
@@ -68,7 +68,7 @@ namespace AssetStudio
|
||||
}
|
||||
|
||||
int m_ConvertCase = reader.ReadInt32();
|
||||
PPtr m_DefaultMaterial = sourceFile.ReadPPtr();
|
||||
PPtr m_DefaultMaterial = reader.ReadPPtr();
|
||||
|
||||
int m_CharacterRects_size = reader.ReadInt32();
|
||||
for (int i = 0; i < m_CharacterRects_size; i++)
|
||||
@@ -93,7 +93,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
PPtr m_Texture = sourceFile.ReadPPtr();
|
||||
PPtr m_Texture = reader.ReadPPtr();
|
||||
|
||||
int m_KerningValues_size = reader.ReadInt32();
|
||||
for (int i = 0; i < m_KerningValues_size; i++)
|
||||
|
||||
@@ -16,30 +16,25 @@ namespace AssetStudio
|
||||
public PPtr m_SkinnedMeshRenderer;
|
||||
public PPtr m_Animator;
|
||||
|
||||
public GameObject(AssetPreloadData preloadData) : base(preloadData)
|
||||
public GameObject(ObjectReader reader) : base(reader)
|
||||
{
|
||||
int m_Component_size = reader.ReadInt32();
|
||||
m_Components = new List<PPtr>(m_Component_size);
|
||||
for (int j = 0; j < m_Component_size; j++)
|
||||
{
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 and up
|
||||
if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5.0 and up
|
||||
{
|
||||
m_Components.Add(sourceFile.ReadPPtr());
|
||||
m_Components.Add(reader.ReadPPtr());
|
||||
}
|
||||
else
|
||||
{
|
||||
int first = reader.ReadInt32();
|
||||
m_Components.Add(sourceFile.ReadPPtr());
|
||||
m_Components.Add(reader.ReadPPtr());
|
||||
}
|
||||
}
|
||||
|
||||
var m_Layer = reader.ReadInt32();
|
||||
m_Name = reader.ReadAlignedString();
|
||||
|
||||
if (m_Name == "")
|
||||
{
|
||||
m_Name = "GameObject #" + preloadData.uniqueID;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,11 +34,11 @@ namespace AssetStudio
|
||||
public strFloatPair[] m_Floats;
|
||||
public strColorPair[] m_Colors;
|
||||
|
||||
public Material(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Material(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Shader = sourceFile.ReadPPtr();
|
||||
m_Shader = reader.ReadPPtr();
|
||||
|
||||
if (sourceFile.version[0] == 4 && (sourceFile.version[1] >= 2 || (sourceFile.version[1] == 1 && sourceFile.buildType[0] != "a")))
|
||||
if (version[0] == 4 && (version[1] >= 2 || (version[1] == 1 && buildType[0] != "a")))
|
||||
{
|
||||
m_ShaderKeywords = new string[reader.ReadInt32()];
|
||||
for (int i = 0; i < m_ShaderKeywords.Length; i++)
|
||||
@@ -46,11 +46,11 @@ namespace AssetStudio
|
||||
m_ShaderKeywords[i] = reader.ReadAlignedString();
|
||||
}
|
||||
}
|
||||
else if (sourceFile.version[0] >= 5)//5.0 and up
|
||||
else if (version[0] >= 5)//5.0 and up
|
||||
{
|
||||
m_ShaderKeywords = new[] { reader.ReadAlignedString() };
|
||||
uint m_LightmapFlags = reader.ReadUInt32();
|
||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 6 || sourceFile.version[0] > 5)//5.6.0 and up
|
||||
if (version[0] == 5 && version[1] >= 6 || version[0] > 5)//5.6.0 and up
|
||||
{
|
||||
var m_EnableInstancingVariants = reader.ReadBoolean();
|
||||
//var m_DoubleSidedGI = a_Stream.ReadBoolean();//2017.x
|
||||
@@ -58,9 +58,9 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceFile.version[0] > 4 || sourceFile.version[0] == 4 && sourceFile.version[1] >= 3) { m_CustomRenderQueue = reader.ReadInt32(); }
|
||||
if (version[0] > 4 || version[0] == 4 && version[1] >= 3) { m_CustomRenderQueue = reader.ReadInt32(); }
|
||||
|
||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 1 || sourceFile.version[0] > 5)//5.1 and up
|
||||
if (version[0] == 5 && version[1] >= 1 || version[0] > 5)//5.1 and up
|
||||
{
|
||||
string[][] stringTagMap = new string[reader.ReadInt32()][];
|
||||
for (int i = 0; i < stringTagMap.Length; i++)
|
||||
@@ -69,7 +69,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
//disabledShaderPasses
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 6) || sourceFile.version[0] > 5)//5.6.0 and up
|
||||
if ((version[0] == 5 && version[1] >= 6) || version[0] > 5)//5.6.0 and up
|
||||
{
|
||||
var size = reader.ReadInt32();
|
||||
for (int i = 0; i < size; i++)
|
||||
@@ -84,7 +84,7 @@ namespace AssetStudio
|
||||
TexEnv m_TexEnv = new TexEnv()
|
||||
{
|
||||
name = reader.ReadAlignedString(),
|
||||
m_Texture = sourceFile.ReadPPtr(),
|
||||
m_Texture = reader.ReadPPtr(),
|
||||
m_Scale = new[] { reader.ReadSingle(), reader.ReadSingle() },
|
||||
m_Offset = new[] { reader.ReadSingle(), reader.ReadSingle() }
|
||||
};
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace AssetStudio
|
||||
public Vector3 tangent { get; set; }
|
||||
public uint index { get; set; }
|
||||
|
||||
public BlendShapeVertex(EndianBinaryReader reader)
|
||||
public BlendShapeVertex(ObjectReader reader)
|
||||
{
|
||||
vertex = reader.ReadVector3();
|
||||
normal = reader.ReadVector3();
|
||||
@@ -87,7 +87,7 @@ namespace AssetStudio
|
||||
public bool hasNormals { get; set; }
|
||||
public bool hasTangents { get; set; }
|
||||
|
||||
public MeshBlendShape(EndianBinaryReader reader)
|
||||
public MeshBlendShape(ObjectReader reader)
|
||||
{
|
||||
firstVertex = reader.ReadUInt32();
|
||||
vertexCount = reader.ReadUInt32();
|
||||
@@ -104,7 +104,7 @@ namespace AssetStudio
|
||||
public int frameIndex { get; set; }
|
||||
public int frameCount { get; set; }
|
||||
|
||||
public MeshBlendShapeChannel(EndianBinaryReader reader)
|
||||
public MeshBlendShapeChannel(ObjectReader reader)
|
||||
{
|
||||
name = reader.ReadAlignedString();
|
||||
nameHash = reader.ReadUInt32();
|
||||
@@ -118,7 +118,7 @@ namespace AssetStudio
|
||||
public List<MeshBlendShapeChannel> channels { get; set; }
|
||||
public List<float> fullWeights { get; set; }
|
||||
|
||||
public BlendShapeData(EndianBinaryReader reader)
|
||||
public BlendShapeData(ObjectReader reader)
|
||||
{
|
||||
int numVerts = reader.ReadInt32();
|
||||
vertices = new List<BlendShapeVertex>(numVerts);
|
||||
@@ -150,10 +150,13 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
private float BytesToFloat(byte[] inputBytes)
|
||||
private float BytesToFloat(byte[] inputBytes, EndianType endian)
|
||||
{
|
||||
float result = 0;
|
||||
if (reader.endian == EndianType.BigEndian) { Array.Reverse(inputBytes); }
|
||||
if (endian == EndianType.BigEndian)
|
||||
{
|
||||
Array.Reverse(inputBytes);
|
||||
}
|
||||
|
||||
switch (inputBytes.Length)
|
||||
{
|
||||
@@ -236,7 +239,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
public Mesh(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Mesh(ObjectReader reader) : base(reader)
|
||||
{
|
||||
bool m_Use16BitIndices = true; //3.5.0 and newer always uses 16bit indices
|
||||
uint m_MeshCompression = 0;
|
||||
@@ -292,7 +295,7 @@ namespace AssetStudio
|
||||
#endregion
|
||||
|
||||
#region BlendShapeData for 4.1.0 to 4.2.x, excluding 4.1.0 alpha
|
||||
if (version[0] == 4 && ((version[1] == 1 && preloadData.sourceFile.buildType[0] != "a") || (version[1] > 1 && version[1] <= 2)))
|
||||
if (version[0] == 4 && ((version[1] == 1 && buildType[0] != "a") || (version[1] > 1 && version[1] <= 2)))
|
||||
{
|
||||
int m_Shapes_size = reader.ReadInt32();
|
||||
if (m_Shapes_size > 0)
|
||||
@@ -348,7 +351,7 @@ namespace AssetStudio
|
||||
bool m_IsReadable = reader.ReadBoolean();
|
||||
bool m_KeepVertices = reader.ReadBoolean();
|
||||
bool m_KeepIndices = reader.ReadBoolean();
|
||||
if (preloadData.HasStructMember("m_UsedForStaticMeshColliderOnly"))
|
||||
if (reader.HasStructMember("m_UsedForStaticMeshColliderOnly"))
|
||||
{
|
||||
var m_UsedForStaticMeshColliderOnly = reader.ReadBoolean();
|
||||
}
|
||||
@@ -356,7 +359,7 @@ namespace AssetStudio
|
||||
reader.AlignStream(4);
|
||||
//This is a bug fixed in 2017.3.1p1 and later versions
|
||||
if ((version[0] > 2017 || (version[0] == 2017 && version[1] >= 4)) || //2017.4
|
||||
((version[0] == 2017 && version[1] == 3 && version[2] == 1) && preloadData.sourceFile.buildType[0] == "p") || //fixed after 2017.3.1px
|
||||
((version[0] == 2017 && version[1] == 3 && version[2] == 1) && buildType[0] == "p") || //fixed after 2017.3.1px
|
||||
((version[0] == 2017 && version[1] == 3) && m_MeshCompression == 0))//2017.3.xfx with no compression
|
||||
{
|
||||
var m_IndexFormat = reader.ReadInt32();
|
||||
@@ -594,7 +597,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
if (preloadData.sourceFile.m_TargetPlatform == BuildTarget.XBOX360 && componentByteSize > 1) //swap bytes for Xbox
|
||||
if (platform == BuildTarget.XBOX360 && componentByteSize > 1) //swap bytes for Xbox
|
||||
{
|
||||
for (var i = 0; i < componentBytes.Length / componentByteSize; i++)
|
||||
{
|
||||
@@ -715,7 +718,7 @@ namespace AssetStudio
|
||||
}
|
||||
}
|
||||
|
||||
if (preloadData.sourceFile.m_TargetPlatform == BuildTarget.XBOX360 && componentByteSize > 1) //swap bytes for Xbox
|
||||
if (platform == BuildTarget.XBOX360 && componentByteSize > 1) //swap bytes for Xbox
|
||||
{
|
||||
for (var i = 0; i < componentBytes.Length / componentByteSize; i++)
|
||||
{
|
||||
@@ -818,7 +821,7 @@ namespace AssetStudio
|
||||
{
|
||||
int m_DataSizeOffset = vertexOffset + componentByteSize * d;
|
||||
Buffer.BlockCopy(m_DataSize, m_DataSizeOffset, componentBytes, 0, componentByteSize);
|
||||
componentsArray[v * m_Channel.dimension + d] = BytesToFloat(componentBytes);
|
||||
componentsArray[v * m_Channel.dimension + d] = BytesToFloat(componentBytes, reader.endian);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@ namespace AssetStudio
|
||||
public long preloadIndex;
|
||||
public PPtr m_Mesh;
|
||||
|
||||
public MeshFilter(AssetPreloadData preloadData) : base(preloadData)
|
||||
public MeshFilter(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Mesh = sourceFile.ReadPPtr();
|
||||
m_Mesh = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace AssetStudio
|
||||
{
|
||||
public sealed class MeshRenderer : Renderer
|
||||
{
|
||||
public MeshRenderer(AssetPreloadData preloadData) : base(preloadData)
|
||||
public MeshRenderer(ObjectReader reader) : base(reader)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -10,9 +10,9 @@ namespace AssetStudio
|
||||
public PPtr m_Script;
|
||||
public string m_Name;
|
||||
|
||||
public MonoBehaviour(AssetPreloadData preloadData) : base(preloadData)
|
||||
public MonoBehaviour(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Script = sourceFile.ReadPPtr();
|
||||
m_Script = reader.ReadPPtr();
|
||||
m_Name = reader.ReadAlignedString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace AssetStudio
|
||||
public string m_Namespace = string.Empty;
|
||||
public string m_AssemblyName;
|
||||
|
||||
public MonoScript(AssetPreloadData preloadData) : base(preloadData)
|
||||
public MonoScript(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (version[0] > 3 || (version[0] == 3 && version[1] >= 4)) //3.4 and up
|
||||
{
|
||||
|
||||
@@ -9,12 +9,12 @@ namespace AssetStudio
|
||||
{
|
||||
public byte[] m_MovieData;
|
||||
|
||||
public MovieTexture(AssetPreloadData preloadData) : base(preloadData)
|
||||
public MovieTexture(ObjectReader reader) : base(reader)
|
||||
{
|
||||
var m_Loop = reader.ReadBoolean();
|
||||
reader.AlignStream(4);
|
||||
//PPtr<AudioClip>
|
||||
sourceFile.ReadPPtr();
|
||||
reader.ReadPPtr();
|
||||
m_MovieData = reader.ReadBytes(reader.ReadInt32());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace AssetStudio
|
||||
{
|
||||
public string m_Name;
|
||||
|
||||
public NamedObject(AssetPreloadData preloadData) : base(preloadData)
|
||||
public NamedObject(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Name = reader.ReadAlignedString();
|
||||
}
|
||||
|
||||
@@ -7,21 +7,20 @@ namespace AssetStudio
|
||||
{
|
||||
public abstract class Object
|
||||
{
|
||||
public AssetPreloadData preloadData;
|
||||
public AssetsFile sourceFile;
|
||||
protected EndianBinaryReader reader;
|
||||
protected AssetsFile sourceFile;
|
||||
public ObjectReader reader;
|
||||
public int[] version;
|
||||
protected string[] buildType;
|
||||
protected BuildTarget platform;
|
||||
public BuildTarget platform;
|
||||
|
||||
protected Object(AssetPreloadData preloadData)
|
||||
protected Object(ObjectReader reader)
|
||||
{
|
||||
this.preloadData = preloadData;
|
||||
sourceFile = preloadData.sourceFile;
|
||||
reader = preloadData.InitReader();
|
||||
version = sourceFile.version;
|
||||
buildType = sourceFile.buildType;
|
||||
platform = sourceFile.m_TargetPlatform;
|
||||
this.reader = reader;
|
||||
reader.Reset();
|
||||
sourceFile = reader.assetsFile;
|
||||
version = reader.version;
|
||||
buildType = reader.buildType;
|
||||
platform = reader.platform;
|
||||
|
||||
if (platform == BuildTarget.NoTarget)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace AssetStudio
|
||||
public string companyName;
|
||||
public string productName;
|
||||
|
||||
public PlayerSettings(AssetPreloadData preloadData) : base(preloadData)
|
||||
public PlayerSettings(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) //5.4.0 nad up
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace AssetStudio
|
||||
{
|
||||
public sealed class RectTransform : Transform
|
||||
{
|
||||
public RectTransform(AssetPreloadData preloadData) : base(preloadData)
|
||||
public RectTransform(ObjectReader reader) : base(reader)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AssetStudio
|
||||
public StaticBatchInfo m_StaticBatchInfo;
|
||||
public uint[] m_SubsetIndices;
|
||||
|
||||
protected Renderer(AssetPreloadData preloadData) : base(preloadData)
|
||||
protected Renderer(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (version[0] < 5)
|
||||
{
|
||||
@@ -54,7 +54,7 @@ namespace AssetStudio
|
||||
m_Materials = new PPtr[reader.ReadInt32()];
|
||||
for (int m = 0; m < m_Materials.Length; m++)
|
||||
{
|
||||
m_Materials[m] = sourceFile.ReadPPtr();
|
||||
m_Materials[m] = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
if (version[0] < 3)
|
||||
@@ -63,7 +63,7 @@ namespace AssetStudio
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 5) || sourceFile.version[0] > 5)//5.5.0 and up
|
||||
if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5.0 and up
|
||||
{
|
||||
m_StaticBatchInfo = new StaticBatchInfo
|
||||
{
|
||||
@@ -77,12 +77,12 @@ namespace AssetStudio
|
||||
m_SubsetIndices = reader.ReadUInt32Array(numSubsetIndices);
|
||||
}
|
||||
|
||||
var m_StaticBatchRoot = sourceFile.ReadPPtr();
|
||||
var m_StaticBatchRoot = reader.ReadPPtr();
|
||||
|
||||
if ((sourceFile.version[0] == 5 && sourceFile.version[1] >= 4) || sourceFile.version[0] > 5)//5.4.0 and up
|
||||
if ((version[0] == 5 && version[1] >= 4) || version[0] > 5)//5.4.0 and up
|
||||
{
|
||||
var m_ProbeAnchor = sourceFile.ReadPPtr();
|
||||
var m_LightProbeVolumeOverride = sourceFile.ReadPPtr();
|
||||
var m_ProbeAnchor = reader.ReadPPtr();
|
||||
var m_LightProbeVolumeOverride = reader.ReadPPtr();
|
||||
}
|
||||
else if (version[0] >= 4 || (version[0] == 3 && version[1] >= 5))//3.5 - 5.3
|
||||
{
|
||||
@@ -92,7 +92,7 @@ namespace AssetStudio
|
||||
{
|
||||
int m_ReflectionProbeUsage = reader.ReadInt32();
|
||||
}
|
||||
var m_LightProbeAnchor = sourceFile.ReadPPtr();
|
||||
var m_LightProbeAnchor = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
if (version[0] >= 5 || (version[0] == 4 && version[1] >= 3))//4.3 and up
|
||||
|
||||
@@ -12,17 +12,17 @@ namespace AssetStudio
|
||||
{
|
||||
public byte[] m_Script;
|
||||
|
||||
public Shader(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Shader(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 5 || sourceFile.version[0] > 5) //5.5.0 and up
|
||||
if (version[0] == 5 && version[1] >= 5 || version[0] > 5) //5.5.0 and up
|
||||
{
|
||||
var str = preloadData.Dump();
|
||||
var str = reader.Dump();
|
||||
m_Script = Encoding.UTF8.GetBytes(str ?? "Serialized Shader can't be read");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Script = reader.ReadBytes(reader.ReadInt32());
|
||||
if (sourceFile.version[0] == 5 && sourceFile.version[1] >= 3) //5.3 - 5.4
|
||||
if (version[0] == 5 && version[1] >= 3) //5.3 - 5.4
|
||||
{
|
||||
reader.AlignStream(4);
|
||||
var m_PathName = reader.ReadAlignedString();
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace AssetStudio
|
||||
public PPtr[] m_Bones;
|
||||
public List<float> m_BlendShapeWeights;
|
||||
|
||||
public SkinnedMeshRenderer(AssetPreloadData preloadData) : base(preloadData)
|
||||
public SkinnedMeshRenderer(ObjectReader reader) : base(reader)
|
||||
{
|
||||
int m_Quality = reader.ReadInt32();
|
||||
var m_UpdateWhenOffscreen = reader.ReadBoolean();
|
||||
@@ -20,15 +20,15 @@ namespace AssetStudio
|
||||
|
||||
if (version[0] == 2 && version[1] < 6)//2.6 down
|
||||
{
|
||||
var m_DisableAnimationWhenOffscreen = sourceFile.ReadPPtr();
|
||||
var m_DisableAnimationWhenOffscreen = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
m_Mesh = sourceFile.ReadPPtr();
|
||||
m_Mesh = reader.ReadPPtr();
|
||||
|
||||
m_Bones = new PPtr[reader.ReadInt32()];
|
||||
for (int b = 0; b < m_Bones.Length; b++)
|
||||
{
|
||||
m_Bones[b] = sourceFile.ReadPPtr();
|
||||
m_Bones[b] = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
if (version[0] < 3)
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AssetStudio
|
||||
public RectangleF textureRect;
|
||||
public PointF[][] m_PhysicsShape;
|
||||
|
||||
public Sprite(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Sprite(ObjectReader reader) : base(reader)
|
||||
{
|
||||
//Rectf m_Rect
|
||||
m_Rect = new RectangleF(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
|
||||
@@ -58,16 +58,16 @@ namespace AssetStudio
|
||||
}
|
||||
|
||||
//PPtr<SpriteAtlas> m_SpriteAtlas
|
||||
m_SpriteAtlas = sourceFile.ReadPPtr();
|
||||
m_SpriteAtlas = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
//SpriteRenderData m_RD
|
||||
// PPtr<Texture2D> texture
|
||||
texture = sourceFile.ReadPPtr();
|
||||
texture = reader.ReadPPtr();
|
||||
// PPtr<Texture2D> alphaTexture
|
||||
if (version[0] >= 5) //5.0 and up
|
||||
{
|
||||
var alphaTexture = sourceFile.ReadPPtr();
|
||||
var alphaTexture = reader.ReadPPtr();
|
||||
}
|
||||
|
||||
if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up
|
||||
|
||||
@@ -13,14 +13,14 @@ namespace AssetStudio
|
||||
public List<Guid> guids = new List<Guid>();
|
||||
|
||||
|
||||
public SpriteAtlas(AssetPreloadData preloadData) : base(preloadData)
|
||||
public SpriteAtlas(ObjectReader reader) : base(reader)
|
||||
{
|
||||
//vector m_PackedSprites
|
||||
var size = reader.ReadInt32();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
//PPtr<Sprite> data
|
||||
sourceFile.ReadPPtr();
|
||||
reader.ReadPPtr();
|
||||
}
|
||||
//vector m_PackedSpriteNamesToIndex
|
||||
size = reader.ReadInt32();
|
||||
@@ -37,14 +37,14 @@ namespace AssetStudio
|
||||
var second = reader.ReadInt64();
|
||||
//SpriteAtlasData second
|
||||
// PPtr<Texture2D> texture
|
||||
textures.Add(sourceFile.ReadPPtr());
|
||||
textures.Add(reader.ReadPPtr());
|
||||
// PPtr<Texture2D> alphaTexture
|
||||
var alphaTexture = sourceFile.ReadPPtr();
|
||||
var alphaTexture = reader.ReadPPtr();
|
||||
// Rectf textureRect
|
||||
textureRects.Add(new RectangleF(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
|
||||
// Vector2f textureRectOffset
|
||||
reader.Position += 8;
|
||||
if (sourceFile.version[0] > 2017 || (sourceFile.version[0] == 2017 && sourceFile.version[1] >= 2))//2017.2 and up
|
||||
if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 2))//2017.2 and up
|
||||
{
|
||||
// Vector2f atlasRectOffset
|
||||
reader.Position += 8;
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace AssetStudio
|
||||
{
|
||||
public byte[] m_Script;
|
||||
|
||||
public TextAsset(AssetPreloadData preloadData) : base(preloadData)
|
||||
public TextAsset(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_Script = reader.ReadBytes(reader.ReadInt32());
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace AssetStudio
|
||||
{
|
||||
public abstract class Texture : NamedObject
|
||||
{
|
||||
protected Texture(AssetPreloadData preloadData) : base(preloadData)
|
||||
protected Texture(ObjectReader reader) : base(reader)
|
||||
{
|
||||
if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up
|
||||
{
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace AssetStudio
|
||||
public uint size;
|
||||
public string path;
|
||||
|
||||
public Texture2D(AssetPreloadData preloadData, bool readData) : base(preloadData)
|
||||
public Texture2D(ObjectReader reader, bool readData) : base(reader)
|
||||
{
|
||||
m_Width = reader.ReadInt32();
|
||||
m_Height = reader.ReadInt32();
|
||||
@@ -58,11 +58,11 @@ namespace AssetStudio
|
||||
{
|
||||
var m_StreamingMipmapsPriority = reader.ReadInt32();
|
||||
}
|
||||
else if (preloadData.HasStructMember("m_StreamingMipmapsPriority")) //will fix in some patch version bundle
|
||||
else if (reader.HasStructMember("m_StreamingMipmapsPriority")) //will fix in some patch version bundle
|
||||
{
|
||||
var m_StreamingMipmapsPriority = reader.ReadInt32();
|
||||
}
|
||||
if (preloadData.HasStructMember("m_StreamingGroupID")) //What the hell is this?
|
||||
if (reader.HasStructMember("m_StreamingGroupID")) //What the hell is this?
|
||||
{
|
||||
var m_StreamingGroupID = reader.ReadUInt32();
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace AssetStudio
|
||||
public List<PPtr> m_Children;
|
||||
public PPtr m_Father;
|
||||
|
||||
public Transform(AssetPreloadData preloadData) : base(preloadData)
|
||||
public Transform(ObjectReader reader) : base(reader)
|
||||
{
|
||||
m_LocalRotation = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() };
|
||||
m_LocalPosition = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() };
|
||||
@@ -23,9 +23,9 @@ namespace AssetStudio
|
||||
m_Children = new List<PPtr>(m_ChildrenCount);
|
||||
for (int j = 0; j < m_ChildrenCount; j++)
|
||||
{
|
||||
m_Children.Add(sourceFile.ReadPPtr());
|
||||
m_Children.Add(reader.ReadPPtr());
|
||||
}
|
||||
m_Father = sourceFile.ReadPPtr();
|
||||
m_Father = reader.ReadPPtr();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,14 +13,14 @@ namespace AssetStudio
|
||||
public string m_Source;
|
||||
public ulong m_Size;
|
||||
|
||||
public VideoClip(AssetPreloadData preloadData, bool readData) : base(preloadData)
|
||||
public VideoClip(ObjectReader reader, bool readData) : base(reader)
|
||||
{
|
||||
m_OriginalPath = reader.ReadAlignedString();
|
||||
var m_ProxyWidth = reader.ReadUInt32();
|
||||
var m_ProxyHeight = reader.ReadUInt32();
|
||||
var Width = reader.ReadUInt32();
|
||||
var Height = reader.ReadUInt32();
|
||||
if (sourceFile.version[0] >= 2017)//2017.x and up
|
||||
if (version[0] >= 2017)//2017.x and up
|
||||
{
|
||||
var m_PixelAspecRatioNum = reader.ReadUInt32();
|
||||
var m_PixelAspecRatioDen = reader.ReadUInt32();
|
||||
|
||||
Reference in New Issue
Block a user