public MonoBehaviorAssetData(BinaryReader reader, int length) { int startOffset = (int)reader.BaseStream.Position; gameObject = new AssetPtr(reader); enabled = reader.ReadInt32(); script = new AssetPtr(reader); name = reader.ReadAlignedString(); int headerLen = (int)reader.BaseStream.Position - startOffset; switch (script.pathID) { case LevelBehaviorData.PathID: data = new LevelBehaviorData(reader, length - headerLen); break; case LevelCollectionBehaviorData.PathID: data = new LevelCollectionBehaviorData(reader, length - headerLen); break; case BeatmapDataBehaviorData.PathID: data = new BeatmapDataBehaviorData(reader, length - headerLen); break; default: data = new UnknownBehaviorData(reader, length - headerLen); break; } }
public BeatmapDifficulty ToAssets( SerializedAssets.Transaction assets, string levelFolderPath, string levelID, Characteristic characteristic ) { string beatmapFile = Path.Combine(levelFolderPath, _beatmapFilename); var beatmapData = BeatmapDataBehaviorData.FromJsonFile(beatmapFile, assets.apkVersion); string characteristicPart = ((characteristic == Characteristic.Standard) ? "" : characteristic.ToString()); string assetName = levelID + characteristicPart + _difficulty.ToString() + "BeatmapData"; MonoBehaviorAssetData monob = new MonoBehaviorAssetData() { script = assets.scriptIDToScriptPtr[BeatmapDataBehaviorData.ScriptID], name = assetName, data = beatmapData, }; AssetPtr assetPtr = assets.AppendAsset(monob); return(new BeatmapDifficulty() { difficulty = (int)_difficulty, difficultyRank = _difficultyRank, noteJumpMovementSpeed = _noteJumpMovementSpeed, noteJumpStartBeatOffset = _noteJumpStartBeatOffset, beatmapData = assetPtr, }); }
public static SpriteAssetData CreateSprite(SerializedAssets assets, AssetPtr customTexture) { // Default Sprite ulong pd = 45; var sp = assets.GetAssetAt(pd); if (!sp.data.GetType().Equals(typeof(SpriteAssetData))) { Console.WriteLine($"[ERROR] Default Sprite data does not exist at PathID: {pd} instead it has Type {sp.data.GetType()} with TypeID: {sp.typeID} and classid: {assets.types[sp.typeID].classID}"); } var sprite = sp.data as SpriteAssetData; return(new SpriteAssetData() { name = "CustomPackCover", texture = customTexture, atlasTags = sprite.atlasTags, extrude = sprite.extrude, floats = sprite.floats, guid = sprite.guid, isPolygon = sprite.isPolygon, second = sprite.second, spriteAtlas = sprite.spriteAtlas, bytesAfterTexture = sprite.bytesAfterTexture }); }
public AssetPtr AddToAssets(SerializedAssets.Transaction assets, Apk.Transaction apk, string levelID) { // var watch = System.Diagnostics.Stopwatch.StartNew(); AudioClipAssetData audioClip = CreateAudioAsset(apk, levelID); AssetPtr audioClipPtr = assets.AppendAsset(audioClip); string coverPath = Path.Combine(levelFolderPath, _coverImageFilename); Texture2DAssetData cover = Texture2DAssetData.CoverFromImageFile(coverPath, levelID); AssetPtr coverPtr = assets.AppendAsset(cover); AssetPtr environment = new AssetPtr(20, 1); // default environment switch (_environmentName) { case "NiceEnvironment": environment = new AssetPtr(38, 3); break; case "TriangleEnvironment": environment = new AssetPtr(0, 252); break; case "BigMirrorEnvironment": environment = new AssetPtr(0, 249); break; } LevelBehaviorData level = new LevelBehaviorData() { levelID = levelID, songName = _songName, songSubName = _songSubName, songAuthorName = _songAuthorName, levelAuthorName = _levelAuthorName, beatsPerMinute = _beatsPerMinute, songTimeOffset = _songTimeOffset, shuffle = _shuffle, shufflePeriod = _shufflePeriod, previewStartTime = _previewStartTime, previewDuration = _previewDuration, audioClip = audioClipPtr, coverImage = coverPtr, environment = environment, difficultyBeatmapSets = _difficultyBeatmapSets.Select(s => s.ToAssets(assets, levelFolderPath, levelID)).Where(s => s != null).ToList(), }; MonoBehaviorAssetData monob = new MonoBehaviorAssetData() { script = new AssetPtr(1, LevelBehaviorData.PathID), name = level.levelID + "Level", data = level, }; // watch.Stop(); // Console.WriteLine("song: " + watch.ElapsedMilliseconds); return(assets.AppendAsset(monob)); }
public BeatmapDifficulty(BinaryReader reader) { difficulty = reader.ReadInt32(); rank = reader.ReadInt32(); noteJumpMovementSpeed = reader.ReadSingle(); noteJumpStartBeatOffset = reader.ReadInt32(); beatmapData = new AssetPtr(reader); }
public LevelBehaviorData(BinaryReader reader, int length) { levelID = reader.ReadAlignedString(); songName = reader.ReadAlignedString(); subName = reader.ReadAlignedString(); authorName = reader.ReadAlignedString(); levelAuthor = reader.ReadAlignedString(); audioClip = new AssetPtr(reader); bpm = reader.ReadSingle(); timeOffset = reader.ReadSingle(); shuffle = reader.ReadSingle(); shufflePeriod = reader.ReadSingle(); previewStartTime = reader.ReadSingle(); previewDuration = reader.ReadSingle(); coverImage = new AssetPtr(reader); environment = new AssetPtr(reader); sets = reader.ReadPrefixedList(r => new BeatmapSet(r)); }
public BeatmapDifficulty ToAssets( SerializedAssets assets, string levelFolderPath, string levelID, Characteristic characteristic ) { string beatmapFile = Path.Combine(levelFolderPath, _beatmapFilename); string jsonData = File.ReadAllText(beatmapFile); BeatmapSaveData saveData = JsonConvert.DeserializeObject <BeatmapSaveData>(jsonData); byte[] projectedData = saveData.SerializeToBinary(); BeatmapDataBehaviorData beatmapData = new BeatmapDataBehaviorData() { jsonData = "", signature = new byte[128], // all zeros projectedData = projectedData, }; string characteristicPart = ((characteristic == Characteristic.Standard) ? "" : characteristic.ToString()); string assetName = levelID + characteristicPart + _difficulty.ToString() + "BeatmapData"; MonoBehaviorAssetData monob = new MonoBehaviorAssetData() { script = new AssetPtr(1, BeatmapDataBehaviorData.PathID), name = assetName, data = beatmapData, }; AssetPtr assetPtr = assets.AppendAsset(monob); return(new BeatmapDifficulty() { difficulty = (int)_difficulty, difficultyRank = _difficultyRank, noteJumpMovementSpeed = _noteJumpMovementSpeed, noteJumpStartBeatOffset = _noteJumpStartBeatOffset, beatmapData = assetPtr, }); }
public BeatmapSet(BinaryReader reader) { characteristic = new AssetPtr(reader); difficulties = reader.ReadPrefixedList(r => new BeatmapDifficulty(r)); }
public MonoBehaviorAssetData() { gameObject = new AssetPtr(0, 0); enabled = 1; }