예제 #1
0
                    public void Unserialize(GMDataReader reader)
                    {
                        Value = reader.ReadInt32();
                        if (reader.ReadWideBoolean())
                        {
                            IsCurveEmbedded = true;
                            if (reader.ReadInt32() != -1)
                            {
                                reader.Warnings.Add(new GMWarning("Expected -1 at interpolated value keyframe"));
                            }

                            GMAnimCurve curve = new GMAnimCurve();
                            curve.Unserialize(reader, false);
                            AnimCurve = curve;
                        }
                        else
                        {
                            IsCurveEmbedded = false;
                            AnimCurveID     = reader.ReadInt32();
                        }
                    }
예제 #2
0
            public void Unserialize(GMDataReader reader)
            {
                ModelName       = reader.ReadStringPointerObject();
                Name            = reader.ReadStringPointerObject();
                BuiltinName     = reader.ReadInt32();
                Traits          = (TraitsEnum)reader.ReadInt32();
                IsCreationTrack = reader.ReadWideBoolean();

                int tagCount           = reader.ReadInt32();
                int ownedResourceCount = reader.ReadInt32();
                int trackCount         = reader.ReadInt32();

                Tags = new List <int>();
                for (int i = 0; i < tagCount; i++)
                {
                    Tags.Add(reader.ReadInt32());
                }

                OwnedResources     = new List <GMSerializable>();
                OwnedResourceTypes = new List <GMString>();
                for (int i = 0; i < ownedResourceCount; i++)
                {
                    GMString str = reader.ReadStringPointerObject();
                    OwnedResourceTypes.Add(str);
                    switch (str.Content)
                    {
                    case "GMAnimCurve":
                        GMAnimCurve curve = new GMAnimCurve();
                        curve.Unserialize(reader);
                        OwnedResources.Add(curve);
                        break;

                    default:
                        reader.Warnings.Add(new GMWarning($"Unknown owned resource type."));
                        break;
                    }
                }

                Tracks = new List <Track>();
                for (int i = 0; i < trackCount; i++)
                {
                    Track track = new Track();
                    track.Unserialize(reader);
                    Tracks.Add(track);
                }

                switch (ModelName.Content)
                {
                case "GMAudioTrack":
                {
                    AudioKeyframes keyframes = new AudioKeyframes();
                    keyframes.Unserialize(reader);
                    Keyframes = keyframes;
                }
                break;

                case "GMInstanceTrack":
                case "GMGraphicTrack":
                case "GMSequenceTrack":
                {
                    IDKeyframes keyframes = new IDKeyframes();
                    keyframes.Unserialize(reader);
                    Keyframes = keyframes;
                }
                break;

                case "GMSpriteFramesTrack":
                case "GMBoolTrack":
                {
                    ValueKeyframes keyframes = new ValueKeyframes();
                    keyframes.Unserialize(reader);
                    Keyframes = keyframes;
                }
                break;

                case "GMStringTrack":
                {
                    StringValueKeyframes keyframes = new StringValueKeyframes();
                    keyframes.Unserialize(reader);
                    Keyframes = keyframes;
                }
                break;

                case "GMColourTrack":
                case "GMRealTrack":
                {
                    ValueInterpolatedKeyframes keyframes = new ValueInterpolatedKeyframes();
                    keyframes.Unserialize(reader);
                    Keyframes = keyframes;
                }
                break;

                case "GMGroupTrack":
                    break;

                default:
                    throw new Exception(string.Format("Unknown sequence \"{0}\" model name.", ModelName.Content));
                }
            }