internal MonoBehaviour(AssetPreloadData preloadData, bool metadataOnly) { var assetFile = preloadData.Source; var reader = assetFile.FileReader; reader.Position = preloadData.Offset; var gameObject = assetFile.ReadPPtr(); var enabled = reader.ReadByte() != 0; reader.AlignBy(4); var script = assetFile.ReadPPtr(); var nameLength = reader.ReadInt32(); var name = reader.ReadAlignedString(nameLength); Name = string.IsNullOrEmpty(name) ? $"{preloadData.TypeName} #{preloadData.UniqueID}" : name; MetadataOnly = metadataOnly; if (metadataOnly) { return; } _variables = preloadData.GetStructure(); }
public MonoScript(AssetPreloadData preloadData) : base(preloadData) { if (version[0] > 3 || (version[0] == 3 && version[1] >= 4)) //3.4 and up { var m_ExecutionOrder = reader.ReadInt32(); } if (version[0] < 5) //5.0 down { var m_PropertiesHash = reader.ReadUInt32(); } else { var m_PropertiesHash = reader.ReadBytes(16); } if (version[0] < 3) //3.0 down { var m_PathName = reader.ReadAlignedString(); } m_ClassName = reader.ReadAlignedString(); if (version[0] >= 3) //3.0 and up { m_Namespace = reader.ReadAlignedString(); } m_AssemblyName = reader.ReadAlignedString(); if (version[0] < 2018 || (version[0] == 2018 && version[1] < 2)) //2018.2 down { var m_IsEditorScript = reader.ReadBoolean(); } }
public PPtrKeyframe(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; time = reader.ReadSingle(); value = preloadData.sourceFile.ReadPPtr(); }
protected EditorExtension(AssetPreloadData preloadData) : base(preloadData) { if (platform == BuildTarget.NoTarget) { var m_PrefabParentObject = sourceFile.ReadPPtr(); var m_PrefabInternal = sourceFile.ReadPPtr(); } }
public static MonoBehaviour LoadAsMonoBehaviour([NotNull] this AssetPreloadData preloadData, bool metadataOnly) { if (preloadData.KnownType != KnownClassID.MonoBehaviour) { throw new InvalidCastException("The asset preload data is not a MonoBehavior."); } return(new MonoBehaviour(preloadData, metadataOnly)); }
public static Avatar LoadAsAvatar([NotNull] this AssetPreloadData preloadData) { if (preloadData.KnownType != KnownClassID.Avatar) { throw new InvalidCastException("The asset preload data is not an Avatar."); } return(Avatar.ReadFromAssetPreloadData(preloadData)); }
public static Mesh LoadAsMesh([NotNull] this AssetPreloadData preloadData) { if (preloadData.KnownType != KnownClassID.Mesh) { throw new InvalidCastException("The asset preload data is not a Mesh."); } return(new Mesh(preloadData, false)); }
protected Texture(AssetPreloadData preloadData) : base(preloadData) { if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up { var m_ForcedFallbackFormat = reader.ReadInt32(); var m_DownscaleFallback = reader.ReadBoolean(); reader.AlignStream(4); } }
public static TextAsset LoadAsTextAsset([NotNull] this AssetPreloadData preloadData, bool metadataOnly) { if (preloadData.KnownType != KnownClassID.TextAsset) { throw new InvalidCastException("The asset preload data is not a TextAsset."); } return(new TextAsset(preloadData, metadataOnly)); }
public FloatCurve(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; curve = new AnimationCurve <float>(reader, reader.ReadSingle, preloadData.sourceFile.version); attribute = reader.ReadAlignedString(); path = reader.ReadAlignedString(); classID = reader.ReadInt32(); script = preloadData.sourceFile.ReadPPtr(); }
private void ImportAssetPreloadData(AssetPreloadData assetPreloadData) { if (assetPreloadData == null) { throw new ArgumentNullException("assetPreloadData"); } switch (assetPreloadData.Type2) { //case 1: //GameObject //case 4: //Transform //case 224: //RectTransform //case 21: //Material case 28: //Texture2D { ExportTexture(assetPreloadData); break; } //case 48: //Shader case 49: //TextAsset { ExportText(assetPreloadData); break; } case 83: //AudioClip { ExportAudioClip(assetPreloadData); break; } //case 89: //CubeMap case 128: //Font { // There have been issues with android font exports in the past, failing the font export is not fatal. try { ExportFont(assetPreloadData); } catch (Exception e) { ValkyrieDebug.Log("Font export error: '" + e.Message); } break; } //case 129: //PlayerSettings case 0: break; } }
protected Object(AssetPreloadData preloadData) { sourceFile = preloadData.sourceFile; reader = preloadData.InitReader(); version = sourceFile.version; buildType = sourceFile.buildType; platform = (BuildTarget)sourceFile.platform; if (platform == BuildTarget.NoTarget) { var m_ObjectHideFlags = reader.ReadUInt32(); } }
public AnimationEvent(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; // check version? time = reader.ReadSingle(); functionName = reader.ReadAlignedString(); stringParameter = reader.ReadAlignedString(); objectReferenceParameter = preloadData.sourceFile.ReadPPtr(); floatParameter = reader.ReadSingle(); intParameter = reader.ReadInt32(); messageOptions = reader.ReadInt32(); }
public Transform(AssetPreloadData preloadData) : base(preloadData) { m_LocalRotation = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() }; m_LocalPosition = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() }; m_LocalScale = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() }; int m_ChildrenCount = reader.ReadInt32(); m_Children = new List <PPtr>(m_ChildrenCount); for (int j = 0; j < m_ChildrenCount; j++) { m_Children.Add(sourceFile.ReadPPtr()); } m_Father = sourceFile.ReadPPtr(); }
private void ImportAssetPreloadData(AssetPreloadData assetPreloadData) { if (assetPreloadData == null) { throw new ArgumentNullException("assetPreloadData"); } switch (assetPreloadData.Type2) { //case 1: //GameObject //case 4: //Transform //case 224: //RectTransform //case 21: //Material case 28: //Texture2D { ExportTexture(assetPreloadData); break; } //case 48: //Shader case 49: //TextAsset { ExportText(assetPreloadData); break; } case 83: //AudioClip { ExportAudioClip(assetPreloadData); break; } //case 89: //CubeMap case 128: //Font { /* * Do not Import fonts from Unity package anymore : an exception error on Android is blocking the Import for MoM. * see #964: MoM 1.7.0 - broken import on Android bug */ // ExportFont(assetPreloadData); break; } //case 129: //PlayerSettings case 0: break; } }
public PPtrCurve(AssetPreloadData preloadData) { 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)); } attribute = reader.ReadAlignedString(); path = reader.ReadAlignedString(); classID = reader.ReadInt32(); script = preloadData.sourceFile.ReadPPtr(); }
private void ImportAssetPreloadData(AssetPreloadData assetPreloadData) { if (assetPreloadData == null) { throw new ArgumentNullException("assetPreloadData"); } switch (assetPreloadData.Type2) { //case 1: //GameObject //case 4: //Transform //case 224: //RectTransform //case 21: //Material case 28: //Texture2D { ExportTexture(assetPreloadData); break; } //case 48: //Shader case 49: //TextAsset { ExportText(assetPreloadData); break; } case 83: //AudioClip { ExportAudioClip(assetPreloadData); break; } //case 89: //CubeMap case 128: //Font { ExportFont(assetPreloadData); break; } //case 129: //PlayerSettings case 0: break; } }
public AnimationClipBindingConstant(AssetPreloadData preloadData) { 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)); } int numMappings = reader.ReadInt32(); pptrCurveMapping = new List <PPtr>(numMappings); for (int i = 0; i < numMappings; i++) { pptrCurveMapping.Add(preloadData.sourceFile.ReadPPtr()); } }
public GenericBinding(AssetPreloadData preloadData) { var reader = preloadData.sourceFile.reader; var version = preloadData.sourceFile.version; path = reader.ReadUInt32(); attribute = reader.ReadUInt32(); script = preloadData.sourceFile.ReadPPtr(); if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up { typeID = reader.ReadInt32(); } else { typeID = reader.ReadUInt16(); } customType = reader.ReadByte(); isPPtrCurve = reader.ReadByte(); reader.AlignStream(4); }
public BuildSettings(AssetPreloadData preloadData) { var sourceFile = preloadData.SourceFile; var reader = preloadData.SourceFile.AssetReader; reader.Position = preloadData.Offset; var levels = reader.ReadInt32(); for (var l = 0; l < levels; l++) { var level = reader.ReadAlignedUtf8String(reader.ReadInt32()); } if (sourceFile.RawVersion[0] == 5) { var preloadedPlugins = reader.ReadInt32(); for (var l = 0; l < preloadedPlugins; l++) { var preloadedPlugin = reader.ReadAlignedUtf8String(reader.ReadInt32()); } } reader.Position += 4; if (sourceFile.FormatSignature >= 8) { reader.Position += 4; } if (sourceFile.FormatSignature >= 9) { reader.Position += 4; } if (sourceFile.RawVersion[0] == 5 || (sourceFile.RawVersion[0] == 4 && (sourceFile.RawVersion[1] >= 3 || (sourceFile.RawVersion[1] == 2 && sourceFile.BuildTypes[0] != "a")))) { reader.Position += 4; } var versionLength = reader.ReadInt32(); VersionString = reader.ReadAlignedUtf8String(versionLength); }
public GameObject(AssetPreloadData preloadData) : base(preloadData) { int m_Component_size = reader.ReadInt32(); m_Component = new List <PPtr>(m_Component_size); for (int j = 0; j < m_Component_size; j++) { if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5.0 and up { m_Component.Add(sourceFile.ReadPPtr()); } else { int first = reader.ReadInt32(); m_Component.Add(sourceFile.ReadPPtr()); } } var m_Layer = reader.ReadInt32(); m_Name = reader.ReadAlignedString(); }
internal static Avatar ReadFromAssetPreloadData([NotNull] AssetPreloadData preloadData) { var sourceFile = preloadData.Source; var version = sourceFile.VersionComponents; var reader = sourceFile.FileReader; var avatar = new Avatar(); reader.Position = preloadData.Offset; avatar.Name = reader.ReadAlignedString(); avatar.Size = reader.ReadUInt32(); avatar.AvatarSkeleton = ReadSkeleton(); avatar.AvatarSkeletonPose = ReadPose(); if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) { avatar.DefaultPose = ReadPose(); var idCount = reader.ReadInt32(); avatar.SkeletonNameIDs = new uint[idCount]; for (var i = 0; i < idCount; ++i) { avatar.SkeletonNameIDs[i] = reader.ReadUInt32(); } } avatar.Human = ReadHuman(); reader.AlignBy(4); avatar.HumanSkeletonIndices = ReadArray(reader.ReadInt32); if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) { avatar.HumanSkeletonReverseIndices = ReadArray(reader.ReadInt32); } avatar.RootMotionBoneIndex = reader.ReadInt32(); avatar.RootMotionBoneTransform = ReadTransform(); if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) { avatar.RootMotionSkeleton = ReadSkeleton(); avatar.RootMotionSkeletonPose = ReadPose(); avatar.RootMotionSkeletonIndices = ReadArray(reader.ReadInt32); } var nameMapEntryCount = reader.ReadInt32(); for (var i = 0; i < nameMapEntryCount; ++i) { var key = reader.ReadUInt32(); var value = reader.ReadAlignedString(); avatar._boneNamesMap[key] = value; } return(avatar); Skeleton ReadSkeleton() { var skeleton = new Skeleton(); var nodeCount = reader.ReadInt32(); skeleton.Nodes = new SkeletonNode[nodeCount]; for (var i = 0; i < nodeCount; ++i) { var parentId = reader.ReadInt32(); var axesId = reader.ReadInt32(); skeleton.Nodes[i] = new SkeletonNode(parentId, axesId); } var idCount = reader.ReadInt32(); skeleton.NodeIDs = new uint[idCount]; for (var i = 0; i < idCount; ++i) { skeleton.NodeIDs[i] = reader.ReadUInt32(); } var axesCount = reader.ReadInt32(); skeleton.Axes = new object[axesCount]; for (var i = 0; i < axesCount; ++i) { if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) { reader.Position += 76; } else { reader.Position += 88; } } return(skeleton); } SkeletonPose ReadPose() { var pose = new SkeletonPose(); var transformCount = reader.ReadInt32(); pose.Transforms = new Transform[transformCount]; for (var i = 0; i < transformCount; ++i) { pose.Transforms[i] = ReadTransform(); } return(pose); } Human ReadHuman() { var human = new Human(); human.RootTransform = ReadTransform(); human.Skeleton = ReadSkeleton(); human.SkeletonPose = ReadPose(); human.LeftHand = ReadHand(); human.RightHand = ReadHand(); if (version[0] < 2018 || (version[0] == 2018 && version[1] < 2)) { var handleCount = reader.ReadInt32(); human.Handles = new object[handleCount]; for (var i = 0; i < handleCount; ++i) { if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) { reader.Position += 48; } else { reader.Position += 56; } } var colliderCount = reader.ReadInt32(); human.Colliders = new object[colliderCount]; for (var i = 0; i < colliderCount; ++i) { if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) { reader.Position += 72; } else { reader.Position += 80; } } } human.HumanBoneIndices = ReadArray(reader.ReadInt32); var massCount = reader.ReadInt32(); human.HumanBoneMasses = new float[massCount]; for (var i = 0; i < massCount; ++i) { human.HumanBoneMasses[i] = reader.ReadSingle(); } if (version[0] < 2018 || (version[0] == 2018 && version[1] < 2)) { human.ColliderIndices = ReadArray(reader.ReadInt32); } human.Scale = reader.ReadSingle(); human.ArmTwist = reader.ReadSingle(); human.ForeArmTwist = reader.ReadSingle(); human.UpperLegTwist = reader.ReadSingle(); human.LegTwist = reader.ReadSingle(); human.ArmStretch = reader.ReadSingle(); human.LegStretch = reader.ReadSingle(); human.FeetSpacing = reader.ReadSingle(); human.HasLeftHand = reader.ReadBoolean(); human.HasRightHand = reader.ReadBoolean(); human.HasTDoF = reader.ReadBoolean(); return(human); } Hand ReadHand() { var hand = new Hand(); var fingerIndexCount = reader.ReadInt32(); for (var i = 0; i < fingerIndexCount; ++i) { hand[i] = reader.ReadInt32(); } return(hand); } Transform ReadTransform() { Transform transform; if (version[0] > 5 || (version[0] == 5 && version[1] >= 4)) { var t = reader.ReadVector3(); var q = reader.ReadQuaternion(); var s = reader.ReadVector3(); transform = new Transform(t, q, s); } else { var t = reader.ReadVector4(); var q = reader.ReadQuaternion(); var s = reader.ReadVector4(); transform = new Transform { Translation = new Vector3(t.X, t.Y, t.Z), Rotation = q, Scale = new Vector3(s.X, s.Y, s.Z) }; } return(transform); } T[] ReadArray <T>(Func <T> readFunc) { var indexCount = reader.ReadInt32(); var result = new T[indexCount]; for (var i = 0; i < indexCount; ++i) { result[i] = readFunc(); } return(result); } }
//public List<AnimationEvent> m_Events { get; set; } public AnimationClip(AssetPreloadData preloadData) : base(preloadData) { if (version[0] >= 5)//5.0 and up { m_Legacy = reader.ReadBoolean(); } else if (version[0] >= 4)//4.0 and up { m_AnimationType = reader.ReadInt32(); if (m_AnimationType == 1) { m_Legacy = true; } } else { m_Legacy = true; } m_Compressed = reader.ReadBoolean(); if (version[0] > 4 || (version[0] == 4 && version[1] >= 3))//4.3 and up { m_UseHighQualityCurve = reader.ReadBoolean(); } reader.AlignStream(4); int numRCurves = reader.ReadInt32(); m_RotationCurves = new List <QuaternionCurve>(numRCurves); for (int i = 0; i < numRCurves; i++) { m_RotationCurves.Add(new QuaternionCurve(reader, version)); } int numCRCurves = reader.ReadInt32(); m_CompressedRotationCurves = new List <CompressedAnimationCurve>(numCRCurves); for (int i = 0; i < numCRCurves; i++) { m_CompressedRotationCurves.Add(new CompressedAnimationCurve(reader)); } if (version[0] > 5 || (version[0] == 5 && version[1] >= 3))//5.3 and up { int numEulerCurves = reader.ReadInt32(); m_EulerCurves = new List <Vector3Curve>(numEulerCurves); for (int i = 0; i < numEulerCurves; i++) { m_EulerCurves.Add(new Vector3Curve(reader, version)); } } int numPCurves = reader.ReadInt32(); m_PositionCurves = new List <Vector3Curve>(numPCurves); for (int i = 0; i < numPCurves; i++) { m_PositionCurves.Add(new Vector3Curve(reader, version)); } int numSCurves = reader.ReadInt32(); m_ScaleCurves = new List <Vector3Curve>(numSCurves); for (int i = 0; i < numSCurves; i++) { m_ScaleCurves.Add(new Vector3Curve(reader, version)); } int numFCurves = reader.ReadInt32(); m_FloatCurves = new List <FloatCurve>(numFCurves); for (int i = 0; i < numFCurves; i++) { m_FloatCurves.Add(new FloatCurve(preloadData)); } if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up { int numPtrCurves = reader.ReadInt32(); m_PPtrCurves = new List <PPtrCurve>(numPtrCurves); for (int i = 0; i < numPtrCurves; i++) { m_PPtrCurves.Add(new PPtrCurve(preloadData)); } } m_SampleRate = reader.ReadSingle(); m_WrapMode = reader.ReadInt32(); if (version[0] > 3 || (version[0] == 3 && version[1] >= 4)) //3.4 and up { m_Bounds = new AABB(reader); } if (version[0] >= 4)//4.0 and up { m_MuscleClipSize = reader.ReadUInt32(); m_MuscleClip = new ClipMuscleConstant(reader, version); } if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up { m_ClipBindingConstant = new AnimationClipBindingConstant(preloadData); } /*int numEvents = reader.ReadInt32(); * m_Events = new List<AnimationEvent>(numEvents); * for (int i = 0; i < numEvents; i++) * { * m_Events.Add(new AnimationEvent(stream, file.Version[0] - '0')); * }*/ }
public TextAsset(AssetPreloadData preloadData) : base(preloadData) { m_Script = reader.ReadBytes(reader.ReadInt32()); }
internal static bool HasStructMember([NotNull] this AssetPreloadData preloadData, [NotNull] string name) { return(preloadData.Source.Objects.TryGetValue(preloadData.Type1, out var classStructure) && classStructure.Children.Any(x => x.Name == name)); }
internal TextAsset([NotNull] AssetPreloadData preloadData, bool metadataOnly) { var sourceFile = preloadData.Source; var reader = sourceFile.FileReader; reader.Position = preloadData.Offset; if (sourceFile.Platform == AssetPlatform.UnityPackage) { var objectHideFlags = reader.ReadUInt32(); var prefabParentObject = sourceFile.ReadPPtr(); var prefabInternal = sourceFile.ReadPPtr(); } Name = reader.ReadAlignedString(); var scriptSize = reader.ReadInt32(); if (metadataOnly) { var isLzmaCompressed = reader.ReadByte(); if (isLzmaCompressed == 93) { reader.Position += 4; preloadData.Size = reader.ReadInt32(); //actualy int64 Size = preloadData.Size; reader.Position -= 8; } else { preloadData.Size = scriptSize; } reader.Position += scriptSize - 1; } else { var script = new byte[scriptSize]; reader.Read(script, 0, scriptSize); if (script[0] == 93) { script = SevenZipHelper.Decompress(script); } RawData = script; Size = scriptSize; } var assetDataVersionNumbers = preloadData.Source.VersionComponents; // It seems like the "PathName" property was removed in 2017.4. if (assetDataVersionNumbers[0] < 2017 || (assetDataVersionNumbers[0] == 2017 && assetDataVersionNumbers[1] <= 3)) { reader.AlignBy(4); PathName = reader.ReadAlignedString(); } else { PathName = Name; } }
private void ReadImageInfo(AssetPreloadData preloadData) { preloadData.InfoText = $"Width: {Width}\nHeight: {Height}\nFormat: "; preloadData.ExportSize = ImageDataSize; var textureFormat = (TextureFormat)Format; preloadData.InfoText += textureFormat.ToString(); switch (textureFormat) { case TextureFormat.Alpha8: case TextureFormat.ARGB4444: case TextureFormat.RGB24: case TextureFormat.RGBA32: case TextureFormat.ARGB32: case TextureFormat.RGB565: case TextureFormat.DXT1: case TextureFormat.DXT5: case TextureFormat.RGBA4444: case TextureFormat.BGRA32: preloadData.Extension = ".dds"; TextureType = TextureType.DDS; preloadData.ExportSize += 128; break; case TextureFormat.DXT1Crunched: case TextureFormat.DXT5Crunched: preloadData.Extension = ".crn"; TextureType = TextureType.CRN; break; case TextureFormat.YUY2: case TextureFormat.PVRTC_RGB2: case TextureFormat.PVRTC_RGBA2: case TextureFormat.PVRTC_RGB4: case TextureFormat.PVRTC_RGBA4: case TextureFormat.ETC_RGB4: case TextureFormat.ETC2_RGB: case TextureFormat.ETC2_RGBA1: case TextureFormat.ETC2_RGBA8: case TextureFormat.EAC_R: case TextureFormat.EAC_R_SIGNED: case TextureFormat.EAC_RG: case TextureFormat.EAC_RG_SIGNED: preloadData.Extension = ".pvr"; TextureType = TextureType.PVR; preloadData.ExportSize += 52; break; case TextureFormat.RHalf: case TextureFormat.RGHalf: case TextureFormat.RGBAHalf: case TextureFormat.RFloat: case TextureFormat.RGFloat: case TextureFormat.RGBAFloat: case TextureFormat.ATC_RGB4: case TextureFormat.ATC_RGBA8: preloadData.Extension = ".ktx"; TextureType = TextureType.KTX; preloadData.ExportSize += 68; break; case TextureFormat.ASTC_RGB_4x4: case TextureFormat.ASTC_RGB_5x5: case TextureFormat.ASTC_RGB_6x6: case TextureFormat.ASTC_RGB_8x8: case TextureFormat.ASTC_RGB_10x10: case TextureFormat.ASTC_RGB_12x12: case TextureFormat.ASTC_RGBA_4x4: case TextureFormat.ASTC_RGBA_5x5: case TextureFormat.ASTC_RGBA_6x6: case TextureFormat.ASTC_RGBA_8x8: case TextureFormat.ASTC_RGBA_10x10: case TextureFormat.ASTC_RGBA_12x12: preloadData.Extension = ".astc"; preloadData.ExportSize += 10; break; default: preloadData.Extension = $"_{textureFormat}.tex"; TextureType = TextureType.Unknown; break; } switch (FilterMode) { case UnityEngine.FilterMode.Point: preloadData.InfoText += "\nFilter Mode: Point"; break; case UnityEngine.FilterMode.Bilinear: preloadData.InfoText += "\nFilter Mode: Bilinear"; break; case UnityEngine.FilterMode.Trilinear: preloadData.InfoText += "\nFilter Mode: Trilinear"; break; } preloadData.InfoText += $"\nAnisotropic level: {AnisotropicLevel}\nMip map bias: {MipBias}"; switch (WrapMode) { case UnityEngine.WrapMode.Repeat: preloadData.InfoText += "\nWrap mode: Repeat"; break; case UnityEngine.WrapMode.Clamp: preloadData.InfoText += "\nWrap mode: Clamp"; break; } }
public MonoBehaviour(AssetPreloadData preloadData) : base(preloadData) { m_Script = sourceFile.ReadPPtr(); m_Name = reader.ReadAlignedString(); }
public Texture2D(AssetPreloadData data) { Initialize(data); }
private void Initialize(AssetPreloadData preloadData) { var sourceFile = preloadData.SourceFile; var reader = sourceFile.AssetReader; reader.Position = preloadData.Offset; if (sourceFile.Platform == UnityPlatformID.UnityPackage) { var objectHideFlags = reader.ReadUInt32(); var prefabParentObject = sourceFile.ReadPPtr(); var prefabInternal = sourceFile.ReadPPtr(); } var nameLength = reader.ReadInt32(); Name = reader.ReadAlignedUtf8String(nameLength); Width = reader.ReadInt32(); Height = reader.ReadInt32(); CompleteImageSize = reader.ReadInt32(); Format = reader.ReadInt32(); if (sourceFile.RawVersion[0] < 5 || (sourceFile.RawVersion[0] == 5 && sourceFile.RawVersion[1] < 2)) { HasMipMap = reader.ReadBoolean(); } else { DdsFlags |= 0x20000; //is this with or without main image? MipMapCount = reader.ReadInt32(); DdsCaps |= 0x400008; } //2.6.0 and up IsReadable = reader.ReadBoolean(); //3.0.0 and up IsReadAllowed = reader.ReadBoolean(); reader.AlignStream(4); ImageCount = reader.ReadInt32(); TextureDimension = reader.ReadInt32(); //m_TextureSettings FilterMode = reader.ReadInt32(); AnisotropicLevel = reader.ReadInt32(); MipBias = reader.ReadSingle(); WrapMode = reader.ReadInt32(); if (sourceFile.RawVersion[0] >= 3) { LightmapFormat = reader.ReadInt32(); if (sourceFile.RawVersion[0] >= 4 || sourceFile.RawVersion[1] >= 5) { //3.5.0 and up (hozuki: >=4.5.0?) ColorSpace = reader.ReadInt32(); } } ImageDataSize = reader.ReadInt32(); if (HasMipMap) { DdsFlags |= 0x20000; MipMapCount = Convert.ToInt32(Math.Log(Math.Max(Width, Height)) / Math.Log(2)); DdsCaps |= 0x400008; } if (ImageDataSize == 0 && ((sourceFile.RawVersion[0] == 5 && sourceFile.RawVersion[1] >= 3) || sourceFile.RawVersion[0] > 5)) { //5.3.0 and up Offset = reader.ReadUInt32(); Size = reader.ReadUInt32(); ImageDataSize = (int)Size; var pathLength = reader.ReadInt32(); FullFileName = reader.ReadAlignedUtf8String(pathLength); } ReadImageInfo(preloadData); ReadImageData(preloadData); }