protected override void DisposeResource() { base.DisposeResource(); if (resourceManager != null) { resourceManager.Dispose(); resourceManager = null; } foreach (var vertex in createdVertices) { vertex.Dispose(); } createdVertices.Clear(); }
private void UnPackAll(PackReader packReader, string spriteDirName, DateTime lastWriteTime) { var imageList = new List <string>(); var effectImageList = new Dictionary <string, List <string> >(); foreach (var fileName in packReader.FileList) { if (!fileName.StartsWith("Effect", StringComparison.Ordinal)) { continue; } var split = fileName.Split('\\'); if (split.Length < 3) { continue; } var effectName = split[1]; var effectImageName = split[2]; var normalizedEffectImageName = SpriteDictionary.RemoveScale(effectImageName); var key = Path.Combine("Effect", effectName, normalizedEffectImageName); if (!effectImageList.TryGetValue(key, out List <string> effectImageNames)) { effectImageNames = new List <string>(); effectImageList.Add(key, effectImageNames); } effectImageNames.Add(fileName); } foreach (string resourceName in packReader.FileList) { var ppdpsr = packReader.Read(resourceName); var split = resourceName.Split('\\'); if (split.Length == 2) { switch (split[0]) { case "Image": imageList.Add(resourceName); break; case "Effect": if (Path.GetExtension(resourceName) == ".etd") { EffectLoader.Load(ppdpsr, resourceName, (ReadResourceCallBack)((filename) => { if (effectImageList.ContainsKey(filename)) { foreach (var imageFileName in effectImageList[filename]) { imageList.Add(imageFileName); } } }), f => packReader.Read(f)); } break; case "Sound": byte[] data = new byte[ppdpsr.Length]; ppdpsr.Read(data, 0, data.Length); soundDict.Add(resourceName, data); break; case "Others": data = new byte[ppdpsr.Length]; ppdpsr.Read(data, 0, data.Length); othersDict.Add(resourceName, data); break; } } } var spriteManager = new PPDPackSpriteManager(packReader, imageList.ToArray(), spriteDirName, lastWriteTime); spriteManager.Pack(); resourceManager = new SpriteResourceManager(device, spriteManager); }