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); }
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); }