示例#1
0
        protected override void OnCoordinateBeingLoaded(ChaFileCoordinate coordinate, bool maintainState)
        {
            var loadFlags = MakerAPI.GetCoordinateLoadFlags();

            if (loadFlags == null || loadFlags.Accessories)
            {
                AccessoryDynamicBoneData.RemoveAll(x => x.CoordinateIndex == CurrentCoordinateIndex);

                var data = GetCoordinateExtendedData(coordinate);
                if (data?.data != null)
                {
                    if (data.data.TryGetValue(nameof(AccessoryDynamicBoneData), out var loadedAccessoryDynamicBoneData) && loadedAccessoryDynamicBoneData != null)
                    {
                        var loadedAccessoryDynamicBoneDataList = MessagePackSerializer.Deserialize <List <DynamicBoneData> >((byte[])loadedAccessoryDynamicBoneData);
                        foreach (var dbData in loadedAccessoryDynamicBoneDataList)
                        {
                            dbData.CoordinateIndex = CurrentCoordinateIndex;
                            AccessoryDynamicBoneData.Add(dbData);
                        }
                    }
                }
            }
            StartCoroutine(ApplyData());

            base.OnCoordinateBeingLoaded(coordinate, maintainState);
        }
示例#2
0
        protected override void OnCoordinateBeingSaved(ChaFileCoordinate coordinate)
        {
            var coordinateAccessoryDynamicBoneData = AccessoryDynamicBoneData.Where(x => x.CoordinateIndex == CurrentCoordinateIndex).ToList();
            var data = new PluginData();

            if (coordinateAccessoryDynamicBoneData.Count > 0)
            {
                data.data.Add(nameof(AccessoryDynamicBoneData), MessagePackSerializer.Serialize(coordinateAccessoryDynamicBoneData));
            }
            else
            {
                data.data.Add(nameof(AccessoryDynamicBoneData), null);
            }
            SetCoordinateExtendedData(coordinate, data);
            base.OnCoordinateBeingSaved(coordinate);
        }