コード例 #1
0
ファイル: EditorExtension.cs プロジェクト: yaoya/AssetStudio
 protected EditorExtension(ObjectReader reader) : base(reader)
 {
     if (platform == BuildTarget.NoTarget)
     {
         var m_PrefabParentObject = reader.ReadPPtr();
         var m_PrefabInternal     = reader.ReadPPtr();
     }
 }
コード例 #2
0
        public Animation(ObjectReader reader) : base(reader)
        {
            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(reader.ReadPPtr());
            }
        }
コード例 #3
0
ファイル: Transform.cs プロジェクト: yaoya/AssetStudio
        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() };
            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(reader.ReadPPtr());
            }
            m_Father = reader.ReadPPtr();
        }
コード例 #4
0
        public AnimatorOverrideController(ObjectReader reader) : base(reader)
        {
            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] = reader.ReadPPtr();
                m_Clips[i][1] = reader.ReadPPtr();
            }
        }
コード例 #5
0
        public Animator(ObjectReader reader) : base(reader)
        {
            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
            {
                var m_UpdateMode = reader.ReadInt32();
            }

            var m_ApplyRootMotion = reader.ReadBoolean();

            if (version[0] == 4 && version[1] >= 5) //4.5 and up - 5.0 down
            {
                reader.AlignStream(4);
            }

            if (version[0] >= 5) //5.0 and up
            {
                var m_LinearVelocityBlending = reader.ReadBoolean();
                reader.AlignStream(4);
            }

            if (version[0] < 4 || (version[0] == 4 && version[1] < 5)) //4.5 down
            {
                var m_AnimatePhysics = reader.ReadBoolean();
            }

            if (version[0] > 4 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
            {
                m_HasTransformHierarchy = reader.ReadBoolean();
            }

            if (version[0] > 4 || (version[0] == 4 && version[1] >= 5)) //4.5 and up
            {
                var m_AllowConstantClipSamplingOptimization = reader.ReadBoolean();
            }
            if (version[0] >= 5 && version[0] < 2018) //5.0 and up - 2018 down
            {
                reader.AlignStream(4);
            }

            if (version[0] >= 2018) //2018 and up
            {
                var m_KeepAnimatorControllerStateOnDisable = reader.ReadBoolean();
                reader.AlignStream(4);
            }
        }
コード例 #6
0
        public SpriteAtlas(ObjectReader reader) : base(reader)
        {
            var m_PackedSpritesSize = reader.ReadInt32();

            for (int i = 0; i < m_PackedSpritesSize; i++)
            {
                reader.ReadPPtr(); //PPtr<Sprite> data
            }

            var m_PackedSpriteNamesToIndexSize = reader.ReadInt32();

            for (int i = 0; i < m_PackedSpriteNamesToIndexSize; i++)
            {
                reader.ReadAlignedString();
            }

            var m_RenderDataMapSize = reader.ReadInt32();

            m_RenderDataMap = new Dictionary <Tuple <Guid, long>, SpriteAtlasData>(m_RenderDataMapSize);
            for (int i = 0; i < m_RenderDataMapSize; i++)
            {
                var first  = new Guid(reader.ReadBytes(16));
                var second = reader.ReadInt64();
                var value  = new SpriteAtlasData(reader);
                m_RenderDataMap.Add(new Tuple <Guid, long>(first, second), value);
            }
            //string m_Tag
            //bool m_IsVariant
        }
コード例 #7
0
        public SpriteAtlasData(ObjectReader reader)
        {
            var version = reader.version;

            texture           = reader.ReadPPtr();
            alphaTexture      = reader.ReadPPtr();
            textureRect       = reader.ReadRectangleF();
            textureRectOffset = reader.ReadVector2();
            if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 2)) //2017.2 and up
            {
                atlasRectOffset = reader.ReadVector2();
            }
            uvTransform         = reader.ReadVector4();
            downscaleMultiplier = reader.ReadSingle();
            settingsRaw         = new SpriteSettings(reader);
        }
コード例 #8
0
 public FloatCurve(ObjectReader reader)
 {
     curve     = new AnimationCurve <float>(reader, reader.ReadSingle);
     attribute = reader.ReadAlignedString();
     path      = reader.ReadAlignedString();
     classID   = reader.ReadInt32();
     script    = reader.ReadPPtr();
 }
コード例 #9
0
ファイル: MovieTexture.cs プロジェクト: yaoya/AssetStudio
        public MovieTexture(ObjectReader reader) : base(reader)
        {
            var m_Loop = reader.ReadBoolean();

            reader.AlignStream(4);
            //PPtr<AudioClip>
            reader.ReadPPtr();
            m_MovieData = reader.ReadBytes(reader.ReadInt32());
        }
コード例 #10
0
ファイル: AssetBundle.cs プロジェクト: yaoya/AssetStudio
        public AssetBundle(ObjectReader reader) : base(reader)
        {
            var size = reader.ReadInt32();

            for (int i = 0; i < size; i++)
            {
                reader.ReadPPtr();
            }
            size = reader.ReadInt32();
            for (int i = 0; i < size; i++)
            {
                var temp = new ContainerData();
                temp.first  = reader.ReadAlignedString();
                temp.second = new AssetInfo();
                temp.second.preloadIndex = reader.ReadInt32();
                temp.second.preloadSize  = reader.ReadInt32();
                temp.second.asset        = reader.ReadPPtr();
                m_Container.Add(temp);
            }
        }
コード例 #11
0
        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 ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5.0 and up
                {
                    m_Components.Add(reader.ReadPPtr());
                }
                else
                {
                    int first = reader.ReadInt32();
                    m_Components.Add(reader.ReadPPtr());
                }
            }

            var m_Layer = reader.ReadInt32();

            m_Name = reader.ReadAlignedString();
        }
コード例 #12
0
        public SkinnedMeshRenderer(ObjectReader reader) : base(reader)
        {
            int m_Quality             = reader.ReadInt32();
            var m_UpdateWhenOffscreen = reader.ReadBoolean();
            var m_SkinNormals         = reader.ReadBoolean(); //3.1.0 and below

            reader.AlignStream(4);

            if (version[0] == 2 && version[1] < 6)//2.6 down
            {
                var m_DisableAnimationWhenOffscreen = reader.ReadPPtr();
            }

            m_Mesh = reader.ReadPPtr();

            m_Bones = new PPtr[reader.ReadInt32()];
            for (int b = 0; b < m_Bones.Length; b++)
            {
                m_Bones[b] = reader.ReadPPtr();
            }

            if (version[0] < 3)
            {
                int m_BindPose = reader.ReadInt32();
                reader.Position += m_BindPose * 16 * 4;//Matrix4x4f
            }
            else
            {
                if (version[0] > 4 || (version[0] == 4 && version[1] >= 3))//4.3 and up
                {
                    int numBSWeights = reader.ReadInt32();
                    m_BlendShapeWeights = new List <float>(numBSWeights);
                    for (int i = 0; i < numBSWeights; i++)
                    {
                        m_BlendShapeWeights.Add(reader.ReadSingle());
                    }
                }
            }
        }
コード例 #13
0
        public PPtrCurve(ObjectReader reader)
        {
            int numCurves = reader.ReadInt32();

            curve = new List <PPtrKeyframe>(numCurves);
            for (int i = 0; i < numCurves; i++)
            {
                curve.Add(new PPtrKeyframe(reader));
            }

            attribute = reader.ReadAlignedString();
            path      = reader.ReadAlignedString();
            classID   = reader.ReadInt32();
            script    = reader.ReadPPtr();
        }
コード例 #14
0
        public AnimationClipBindingConstant(ObjectReader reader)
        {
            int numBindings = reader.ReadInt32();

            genericBindings = new List <GenericBinding>(numBindings);
            for (int i = 0; i < numBindings; i++)
            {
                genericBindings.Add(new GenericBinding(reader));
            }

            int numMappings = reader.ReadInt32();

            pptrCurveMapping = new List <PPtr>(numMappings);
            for (int i = 0; i < numMappings; i++)
            {
                pptrCurveMapping.Add(reader.ReadPPtr());
            }
        }
コード例 #15
0
        public GenericBinding(ObjectReader reader)
        {
            var version = reader.version;

            path      = reader.ReadUInt32();
            attribute = reader.ReadUInt32();
            script    = reader.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);
        }
コード例 #16
0
        public AnimatorController(ObjectReader reader) : base(reader)
        {
            var m_ControllerSize = reader.ReadUInt32();
            var m_Controller     = new ControllerConstant(reader);

            int tosSize = reader.ReadInt32();
            var m_TOS   = new List <KeyValuePair <uint, string> >(tosSize);

            for (int i = 0; i < tosSize; i++)
            {
                m_TOS.Add(new KeyValuePair <uint, string>(reader.ReadUInt32(), reader.ReadAlignedString()));
            }

            int numClips = reader.ReadInt32();

            m_AnimationClips = new PPtr[numClips];
            for (int i = 0; i < numClips; i++)
            {
                m_AnimationClips[i] = reader.ReadPPtr();
            }
        }
コード例 #17
0
        private static void DumpType(TypeSig typeSig, StringBuilder sb, ObjectReader reader, string name, int indent, bool isRoot = false)
        {
            var typeDef = typeSig.ToTypeDefOrRef().ResolveTypeDefThrow();

            if (typeSig.IsPrimitive)
            {
                object value = null;
                switch (typeSig.TypeName)
                {
                case "Boolean":
                    value = reader.ReadBoolean();
                    break;

                case "Byte":
                    value = reader.ReadByte();
                    break;

                case "SByte":
                    value = reader.ReadSByte();
                    break;

                case "Int16":
                    value = reader.ReadInt16();
                    break;

                case "UInt16":
                    value = reader.ReadUInt16();
                    break;

                case "Int32":
                    value = reader.ReadInt32();
                    break;

                case "UInt32":
                    value = reader.ReadUInt32();
                    break;

                case "Int64":
                    value = reader.ReadInt64();
                    break;

                case "UInt64":
                    value = reader.ReadUInt64();
                    break;

                case "Single":
                    value = reader.ReadSingle();
                    break;

                case "Double":
                    value = reader.ReadDouble();
                    break;

                case "Char":
                    value = reader.ReadChar();
                    break;
                }
                reader.AlignStream(4);
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = {value}");
                return;
            }
            if (typeSig.FullName == "System.String")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = \"{reader.ReadAlignedString()}\"");
                return;
            }
            if (typeSig.FullName == "System.Object")
            {
                return;
            }
            if (typeDef.IsDelegate)
            {
                return;
            }
            if (typeSig is ArraySigBase)
            {
                if (!typeDef.IsEnum && !IsBaseType(typeDef) && !IsAssignFromUnityObject(typeDef) && !IsEngineType(typeDef) && !typeDef.IsSerializable)
                {
                    return;
                }
                var size = reader.ReadInt32();
                sb.AppendLine($"{new string('\t', indent)}{typeSig.TypeName} {name}");
                sb.AppendLine($"{new string('\t', indent + 1)}Array Array");
                sb.AppendLine($"{new string('\t', indent + 1)}int size = {size}");
                for (int i = 0; i < size; i++)
                {
                    sb.AppendLine($"{new string('\t', indent + 2)}[{i}]");
                    DumpType(typeDef.ToTypeSig(), sb, reader, "data", indent + 2);
                }
                return;
            }
            if (!isRoot && typeSig is GenericInstSig genericInstSig)
            {
                if (genericInstSig.GenericArguments.Count == 1)
                {
                    var type = genericInstSig.GenericArguments[0].ToTypeDefOrRef().ResolveTypeDefThrow();
                    if (!type.IsEnum && !IsBaseType(type) && !IsAssignFromUnityObject(type) && !IsEngineType(type) && !type.IsSerializable)
                    {
                        return;
                    }
                    var size = reader.ReadInt32();
                    sb.AppendLine($"{new string('\t', indent)}{typeSig.TypeName} {name}");
                    sb.AppendLine($"{new string('\t', indent + 1)}Array Array");
                    sb.AppendLine($"{new string('\t', indent + 1)}int size = {size}");
                    for (int i = 0; i < size; i++)
                    {
                        sb.AppendLine($"{new string('\t', indent + 2)}[{i}]");
                        DumpType(genericInstSig.GenericArguments[0], sb, reader, "data", indent + 2);
                    }
                }
                return;
            }
            if (indent != -1 && IsAssignFromUnityObject(typeDef))
            {
                var pptr = reader.ReadPPtr();
                sb.AppendLine($"{new string('\t', indent)}PPtr<{typeDef.Name}> {name} = {{fileID: {pptr.m_FileID}, pathID: {pptr.m_PathID}}}");
                return;
            }
            if (typeDef.IsEnum)
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = {reader.ReadUInt32()}");
                return;
            }
            if (indent != -1 && !IsEngineType(typeDef) && !typeDef.IsSerializable)
            {
                return;
            }
            if (typeDef.FullName == "UnityEngine.Rect")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                var rect = reader.ReadSingleArray(4);
                return;
            }
            if (typeDef.FullName == "UnityEngine.LayerMask")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                var value = reader.ReadInt32();
                return;
            }
            if (typeDef.FullName == "UnityEngine.AnimationCurve")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                var animationCurve = new AnimationCurve <float>(reader, reader.ReadSingle);
                return;
            }
            if (typeDef.FullName == "UnityEngine.Gradient")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                if (reader.version[0] == 5 && reader.version[1] < 5)
                {
                    reader.Position += 68;
                }
                else if (reader.version[0] == 5 && reader.version[1] < 6)
                {
                    reader.Position += 72;
                }
                else
                {
                    reader.Position += 168;
                }
                return;
            }
            if (typeDef.FullName == "UnityEngine.RectOffset")
            {
                sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                var left   = reader.ReadSingle();
                var right  = reader.ReadSingle();
                var top    = reader.ReadSingle();
                var bottom = reader.ReadSingle();
                return;
            }
            if (typeDef.FullName == "UnityEngine.GUIStyle") //TODO
            {
                throw new NotSupportedException();
            }
            if (typeDef.IsClass || typeDef.IsValueType)
            {
                if (name != null && indent != -1)
                {
                    sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}");
                }
                if (indent == -1 && typeDef.BaseType.FullName != "UnityEngine.Object")
                {
                    DumpType(typeDef.BaseType.ToTypeSig(), sb, reader, null, indent, true);
                }
                if (indent != -1 && typeDef.BaseType.FullName != "System.Object")
                {
                    DumpType(typeDef.BaseType.ToTypeSig(), sb, reader, null, indent, true);
                }
                foreach (var fieldDef in typeDef.Fields)
                {
                    var access = fieldDef.Access & FieldAttributes.FieldAccessMask;
                    if (access != FieldAttributes.Public)
                    {
                        if (fieldDef.CustomAttributes.Any(x => x.TypeFullName.Contains("SerializeField")))
                        {
                            DumpType(fieldDef.FieldType, sb, reader, fieldDef.Name, indent + 1);
                        }
                    }
                    else if ((fieldDef.Attributes & FieldAttributes.Static) == 0 && (fieldDef.Attributes & FieldAttributes.InitOnly) == 0 && (fieldDef.Attributes & FieldAttributes.NotSerialized) == 0)
                    {
                        DumpType(fieldDef.FieldType, sb, reader, fieldDef.Name, indent + 1);
                    }
                }
            }
        }
コード例 #18
0
        public PointF[][] m_PhysicsShape; //Vector2[][]

        public Sprite(ObjectReader reader) : base(reader)
        {
            //Rectf m_Rect
            m_Rect = reader.ReadRectangleF();
            //Vector2f m_Offset
            reader.Position += 8;
            if (version[0] > 4 || (version[0] == 4 && version[1] >= 5)) //4.5 and up
            {
                //Vector4f m_Border
                reader.Position += 16;
            }

            m_PixelsToUnits = reader.ReadSingle();
            if (version[0] > 5 ||
                (version[0] == 5 && version[1] > 4) ||
                (version[0] == 5 && version[1] == 4 && version[2] >= 2))    //5.4.2 and up
            {
                //Vector2f m_Pivot
                m_Pivot = reader.ReadVector2();
            }

            var m_Extrude = reader.ReadUInt32();

            if (version[0] > 5 || (version[0] == 5 && version[1] >= 3)) //5.3 and up
            {
                var m_IsPolygon = reader.ReadBoolean();
                reader.AlignStream(4);
            }

            if (version[0] >= 2017) //2017 and up
            {
                //pair m_RenderDataKey
                var first  = new Guid(reader.ReadBytes(16));
                var second = reader.ReadInt64();
                m_RenderDataKey = new Tuple <Guid, long>(first, second);
                //vector m_AtlasTags
                var size = reader.ReadInt32();
                for (int i = 0; i < size; i++)
                {
                    var data = reader.ReadAlignedString();
                }

                //PPtr<SpriteAtlas> m_SpriteAtlas
                m_SpriteAtlas = reader.ReadPPtr();
            }

            //SpriteRenderData m_RD
            //  PPtr<Texture2D> texture
            texture = reader.ReadPPtr();
            //  PPtr<Texture2D> alphaTexture
            if (version[0] > 5 || (version[0] == 5 && version[1] >= 2)) //5.2 and up
            {
                var alphaTexture = reader.ReadPPtr();
            }

            if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up
            {
                //  vector m_SubMeshes
                var size = reader.ReadInt32();
                //      SubMesh data
                if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up
                {
                    reader.Position += 48 * size;
                }
                else
                {
                    reader.Position += 44 * size;
                }

                //  vector m_IndexBuffer
                size             = reader.ReadInt32();
                reader.Position += size; //UInt8 data
                reader.AlignStream(4);
                //  VertexData m_VertexData
                if (version[0] < 2018)//2018 down
                {
                    var m_CurrentChannels = reader.ReadInt32();
                }
                var m_VertexCount = reader.ReadUInt32();
                //      vector m_Channels
                size             = reader.ReadInt32();
                reader.Position += size * 4; //ChannelInfo data
                                             //      TypelessData m_DataSize
                size             = reader.ReadInt32();
                reader.Position += size;     //UInt8 data
                reader.AlignStream(4);

                if (version[0] >= 2018)//2018 and up
                {
                    //	vector m_Bindpose
                    //			Matrix4x4f data
                    size             = reader.ReadInt32();
                    reader.Position += size * 64;
                    if (version[0] == 2018 && version[1] < 2) //2018.2 down
                    {
                        //	vector m_SourceSkin
                        //			BoneWeights4 data
                        size             = reader.ReadInt32();
                        reader.Position += size * 32;
                    }
                }
            }
            else
            {
                //  vector vertices
                var size = reader.ReadInt32();
                for (int i = 0; i < size; i++)
                {
                    //SpriteVertex data
                    reader.Position += 12;                                      //Vector3f pos
                    if (version[0] < 4 || (version[0] == 4 && version[1] <= 3)) //4.3 and down
                    {
                        reader.Position += 8;                                   //Vector2f uv
                    }
                }

                //  vector indices
                size             = reader.ReadInt32();
                reader.Position += 2 * size; //UInt16 data
                reader.AlignStream(4);
            }

            //  Rectf textureRect
            textureRect = reader.ReadRectangleF();
            //  Vector2f textureRectOffset
            reader.Position += 8;
            //  Vector2f atlasRectOffset - 5.6 and up
            if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up
            {
                reader.Position += 8;
            }
            //  unsigned int settingsRaw
            settingsRaw = new SpriteSettings(reader);
            //  Vector4f uvTransform - 4.5 and up
            if (version[0] > 4 || (version[0] == 4 && version[1] >= 5)) //4.5 and up
            {
                reader.Position += 16;
            }
            if (version[0] >= 2017) //2017 and up
            {
                //  float downscaleMultiplier - 2017 and up
                reader.Position += 4;
                //vector m_PhysicsShape - 2017 and up
                var m_PhysicsShape_size = reader.ReadInt32();
                m_PhysicsShape = new PointF[m_PhysicsShape_size][];
                for (int i = 0; i < m_PhysicsShape_size; i++)
                {
                    var data_size = reader.ReadInt32();
                    //Vector2f
                    m_PhysicsShape[i] = new PointF[data_size];
                    for (int j = 0; j < data_size; j++)
                    {
                        m_PhysicsShape[i][j] = new PointF(reader.ReadSingle(), reader.ReadSingle());
                    }
                }
            }
            //vector m_Bones 2018 and up
        }
コード例 #19
0
ファイル: Font.cs プロジェクト: yaoya/AssetStudio
        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     = reader.ReadPPtr();
                var m_FontSize            = reader.ReadSingle();
                var m_Texture             = reader.ReadPPtr();
                int m_AsciiStartOffset    = reader.ReadInt32();
                var m_Tracking            = reader.ReadSingle();
                var m_CharacterSpacing    = reader.ReadInt32();
                var m_CharacterPadding    = reader.ReadInt32();
                var m_ConvertCase         = reader.ReadInt32();
                int m_CharacterRects_size = reader.ReadInt32();
                for (int i = 0; i < m_CharacterRects_size; i++)
                {
                    reader.Position += 44;//CharacterInfo data 41
                }
                int m_KerningValues_size = reader.ReadInt32();
                for (int i = 0; i < m_KerningValues_size; i++)
                {
                    reader.Position += 8;
                }
                var m_PixelScale    = reader.ReadSingle();
                int m_FontData_size = reader.ReadInt32();
                if (m_FontData_size > 0)
                {
                    m_FontData = reader.ReadBytes(m_FontData_size);
                }
            }
            else
            {
                int m_AsciiStartOffset = reader.ReadInt32();

                if (version[0] <= 3)
                {
                    int m_FontCountX = reader.ReadInt32();
                    int m_FontCountY = reader.ReadInt32();
                }

                float m_Kerning     = reader.ReadSingle();
                float m_LineSpacing = reader.ReadSingle();

                if (version[0] <= 3)
                {
                    int m_PerCharacterKerning_size = reader.ReadInt32();
                    for (int i = 0; i < m_PerCharacterKerning_size; i++)
                    {
                        int   first  = reader.ReadInt32();
                        float second = reader.ReadSingle();
                    }
                }
                else
                {
                    int m_CharacterSpacing = reader.ReadInt32();
                    int m_CharacterPadding = reader.ReadInt32();
                }

                int  m_ConvertCase     = reader.ReadInt32();
                PPtr m_DefaultMaterial = reader.ReadPPtr();

                int m_CharacterRects_size = reader.ReadInt32();
                for (int i = 0; i < m_CharacterRects_size; i++)
                {
                    int index = reader.ReadInt32();
                    //Rectf uv
                    float uvx      = reader.ReadSingle();
                    float uvy      = reader.ReadSingle();
                    float uvwidth  = reader.ReadSingle();
                    float uvheight = reader.ReadSingle();
                    //Rectf vert
                    float vertx      = reader.ReadSingle();
                    float verty      = reader.ReadSingle();
                    float vertwidth  = reader.ReadSingle();
                    float vertheight = reader.ReadSingle();
                    float width      = reader.ReadSingle();

                    if (version[0] >= 4)
                    {
                        var flipped = reader.ReadBoolean();
                        reader.AlignStream(4);
                    }
                }

                PPtr m_Texture = reader.ReadPPtr();

                int m_KerningValues_size = reader.ReadInt32();
                for (int i = 0; i < m_KerningValues_size; i++)
                {
                    int   pairfirst  = reader.ReadInt16();
                    int   pairsecond = reader.ReadInt16();
                    float second     = reader.ReadSingle();
                }

                if (version[0] <= 3)
                {
                    var m_GridFont = reader.ReadBoolean();
                    reader.AlignStream(4);
                }
                else
                {
                    float m_PixelScale = reader.ReadSingle();
                }

                int m_FontData_size = reader.ReadInt32();
                if (m_FontData_size > 0)
                {
                    m_FontData = reader.ReadBytes(m_FontData_size);
                }
            }
        }
コード例 #20
0
ファイル: Component.cs プロジェクト: yaoya/AssetStudio
 protected Component(ObjectReader reader) : base(reader)
 {
     m_GameObject = reader.ReadPPtr();
 }
コード例 #21
0
 public PPtrKeyframe(ObjectReader reader)
 {
     time  = reader.ReadSingle();
     value = reader.ReadPPtr();
 }
コード例 #22
0
 public MeshFilter(ObjectReader reader) : base(reader)
 {
     m_Mesh = reader.ReadPPtr();
 }
コード例 #23
0
ファイル: Renderer.cs プロジェクト: yaoya/AssetStudio
        protected Renderer(ObjectReader reader) : base(reader)
        {
            if (version[0] < 5)
            {
                var m_Enabled        = reader.ReadBoolean();
                var m_CastShadows    = reader.ReadByte();
                var m_ReceiveShadows = reader.ReadBoolean();
                var m_LightmapIndex  = reader.ReadByte();
            }
            else
            {
                var m_Enabled = reader.ReadBoolean();
                reader.AlignStream(4);
                var m_CastShadows    = reader.ReadByte();
                var m_ReceiveShadows = reader.ReadBoolean();
                reader.AlignStream(4);
                if (version[0] >= 2018)//2018 and up
                {
                    var m_RenderingLayerMask = reader.ReadUInt32();
                }
                var m_LightmapIndex        = reader.ReadUInt16();
                var m_LightmapIndexDynamic = reader.ReadUInt16();
            }

            if (version[0] >= 3)
            {
                reader.Position += 16;//Vector4f m_LightmapTilingOffset
            }

            if (version[0] >= 5)
            {
                reader.Position += 16;//Vector4f m_LightmapTilingOffsetDynamic
            }

            m_Materials = new PPtr[reader.ReadInt32()];
            for (int m = 0; m < m_Materials.Length; m++)
            {
                m_Materials[m] = reader.ReadPPtr();
            }

            if (version[0] < 3)
            {
                reader.Position += 16;//m_LightmapTilingOffset vector4d
            }
            else
            {
                if ((version[0] == 5 && version[1] >= 5) || version[0] > 5)//5.5.0 and up
                {
                    m_StaticBatchInfo = new StaticBatchInfo
                    {
                        firstSubMesh = reader.ReadUInt16(),
                        subMeshCount = reader.ReadUInt16()
                    };
                }
                else
                {
                    int numSubsetIndices = reader.ReadInt32();
                    m_SubsetIndices = reader.ReadUInt32Array(numSubsetIndices);
                }

                var m_StaticBatchRoot = reader.ReadPPtr();

                if ((version[0] == 5 && version[1] >= 4) || version[0] > 5)//5.4.0 and up
                {
                    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
                {
                    var m_UseLightProbes = reader.ReadBoolean();
                    reader.AlignStream(4);
                    if (version[0] == 5)//5.0 and up
                    {
                        int m_ReflectionProbeUsage = reader.ReadInt32();
                    }
                    var m_LightProbeAnchor = reader.ReadPPtr();
                }

                if (version[0] >= 5 || (version[0] == 4 && version[1] >= 3)) //4.3 and up
                {
                    if (version[0] == 4 && version[1] == 3)                  //4.3
                    {
                        int m_SortingLayer = reader.ReadInt16();
                    }
                    else
                    {
                        int m_SortingLayerID = reader.ReadInt32();
                        //SInt16 m_SortingOrder 5.6 and up
                    }

                    int m_SortingOrder = reader.ReadInt16();
                    reader.AlignStream(4);
                }
            }
        }
コード例 #24
0
 public MonoBehaviour(ObjectReader reader) : base(reader)
 {
     m_Script = reader.ReadPPtr();
     m_Name   = reader.ReadAlignedString();
 }
コード例 #25
0
ファイル: Material.cs プロジェクト: yaoya/AssetStudio
        public Material(ObjectReader reader) : base(reader)
        {
            m_Shader = reader.ReadPPtr();

            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++)
                {
                    m_ShaderKeywords[i] = reader.ReadAlignedString();
                }
            }
            else if (version[0] >= 5)//5.0 and up
            {
                m_ShaderKeywords = new[] { reader.ReadAlignedString() };
                uint m_LightmapFlags = reader.ReadUInt32();
                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
                    reader.AlignStream(4);
                }
            }

            if (version[0] > 4 || version[0] == 4 && version[1] >= 3)
            {
                m_CustomRenderQueue = reader.ReadInt32();
            }

            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++)
                {
                    stringTagMap[i] = new[] { reader.ReadAlignedString(), reader.ReadAlignedString() };
                }
            }
            //disabledShaderPasses
            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++)
                {
                    reader.ReadAlignedString();
                }
            }
            //m_SavedProperties
            m_TexEnvs = new TexEnv[reader.ReadInt32()];
            for (int i = 0; i < m_TexEnvs.Length; i++)
            {
                TexEnv m_TexEnv = new TexEnv()
                {
                    name      = reader.ReadAlignedString(),
                    m_Texture = reader.ReadPPtr(),
                    m_Scale   = new[] { reader.ReadSingle(), reader.ReadSingle() },
                    m_Offset  = new[] { reader.ReadSingle(), reader.ReadSingle() }
                };
                m_TexEnvs[i] = m_TexEnv;
            }

            m_Floats = new strFloatPair[reader.ReadInt32()];
            for (int i = 0; i < m_Floats.Length; i++)
            {
                strFloatPair m_Float = new strFloatPair()
                {
                    first  = reader.ReadAlignedString(),
                    second = reader.ReadSingle()
                };
                m_Floats[i] = m_Float;
            }

            m_Colors = new strColorPair[reader.ReadInt32()];
            for (int i = 0; i < m_Colors.Length; i++)
            {
                strColorPair m_Color = new strColorPair()
                {
                    first  = reader.ReadAlignedString(),
                    second = new[] { reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle() }
                };
                m_Colors[i] = m_Color;
            }
        }