public static CameraAnimationSet <CharacterImasMotionAsset> LoadCamera([NotNull] string filePath, [CanBeNull] int?desiredCameraNumber) { CharacterImasMotionAsset cam = null, apa = null, apg = null, bpg = null; var manager = new AssetsManager(); manager.LoadFiles(filePath); var ser = new ScriptableObjectSerializer(); int cameraNumber; if (desiredCameraNumber != null) { do { // Some songs, e.g. Alliance Stardust (alstar), has more than one cameras. // In these cases the user must select the appropriate camera number. if (TryLoadSpecifiedCamera(manager, ser, desiredCameraNumber.Value, ref cam, ref apa, ref apg, ref bpg)) { cameraNumber = desiredCameraNumber.Value; break; } TryLoadFirstFoundCamera(manager, ser, ref cam, ref apa, ref apg, ref bpg); cameraNumber = InvalidCameraNumber; } while (false); } else { TryLoadFirstFoundCamera(manager, ser, ref cam, ref apa, ref apg, ref bpg); cameraNumber = UnspecifiedCameraNumber; } return(AnimationSet.CreateCamera(cameraNumber, cam, apg, apa, bpg)); }