public static void GetItemsBySlot(this ItemCollection items, E_CHAR_SLOTS slot) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint itemCount = _wowDatabase.ItemCount; items.Clear(); for (uint i = 0; i < itemCount; ++i) { SItem?r = _wowDatabase.GetItem(i); if (r != null) { if (r.Value.IsMatchSlot(slot) && (r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1)) { items.Add(new Item() { Name = r.Value.name, Type = (E_ITEM_TYPE)r.Value.type, Id = r.Value.id, SubClassName = r.Value.subclassname }); } } } }
public static void GetAllSpellVisualEffects(this SpellVisualEffectCollection spellVisualEffects) { WowDatabase wowDatabase = Engine.Instance.WowDatabase; uint visualCount = wowDatabase.SpellVisualEffectCount; spellVisualEffects.Clear(); for (uint i = 0; i < visualCount; ++i) { int?id = wowDatabase.GetSpellVisualEffectId(i); if (id != null) { string path = Engine.Instance.WowDatabase.GetSpellVisualEffectPath(id.Value); if (Engine.Instance.WowEnvironment.IsFileExist(path)) { string name = Engine.Instance.WowDatabase.GetSpellVisualEffectName(id.Value); if (!name.Contains("zzOLD_")) { spellVisualEffects.Add(new SpellVisualEffect() { Id = id.Value, Name = name }); } } } } }
private void ChangeCharacter() { if (raceInfo == null) { return; } WowDatabase _wowDatabase = Engine.Instance.WowDatabase; string path = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female, ModelEditorService.Instance.IsCharacterHD); M2SceneNode node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); if (node == null && ModelEditorService.Instance.IsCharacterHD) { path = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female, false); node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); } UpdateMaxCharFeature(); UpdateCurrentCharFeature(); UpdateStartOutfitClasses(); SelectClass(classShortName, true); Player player = Client.Instance.GetPlayer(); if (EngineService.Instance.IsGameMode && node != null && (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE)) { player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f)); } else { player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f)); } }
private bool LoadCharacter() { string shortname = Engine.Instance.WowDatabase.GetRaceName(raceId); WowDatabase _wowDatabase = Engine.Instance.WowDatabase; string path = _wowDatabase.GetCharacterPath(shortname, female, true); M2SceneNode node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); if (node == null) { path = _wowDatabase.GetCharacterPath(shortname, female, true); node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); } if (node != null) { node.M2Instance.CharFeature = charFeature; } Player player = Client.Instance.GetPlayer(); if (EngineService.Instance.IsGameMode && node != null && (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE)) { player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f)); } else { player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f)); } return(node != null); }
public static void GetAllMaps(this MapCollection maps, Languages language) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint mapCount = _wowDatabase.MapCount; maps.Clear(); for (uint i = 0; i < mapCount; ++i) { SMap?m = _wowDatabase.GetMap(i); if (m != null) { if (m.Value.name.IndexOf("test", StringComparison.CurrentCultureIgnoreCase) != -1 || m.Value.name.IndexOf("transport", StringComparison.CurrentCultureIgnoreCase) != -1 || m.Value.name.IndexOf("QA_DVD", StringComparison.CurrentCultureIgnoreCase) != -1 || m.Value.name.IndexOf("development", StringComparison.CurrentCultureIgnoreCase) != -1) { continue; } maps.Add(new Map() { Id = m.Value.id, Name = m.Value.name, Type = GetMapTypeName(m.Value.type, language) }); } } }
public static void GetItemsByType(this M2ItemCollection items, E_ITEM_TYPE type) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint itemCount = _wowDatabase.ItemCount; items.Clear(); for (uint i = 0; i < itemCount; ++i) { SItem?r = _wowDatabase.GetItem(i); if (r != null && r.Value.type == (int)type && r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1) { int itemid = r.Value.id; string modelpath; string texturepath; modelpath = _wowDatabase.GetItemPath(itemid, out texturepath); items.Add(new M2Item() { Name = r.Value.name, Type = (E_ITEM_TYPE)r.Value.type, Id = r.Value.id, SubClassName = r.Value.subclassname, ModelPath = modelpath, TexturePath = texturepath }); } } }
private void ChangeCharacter() { if (raceInfo == null) { return; } WowDatabase _wowDatabase = Engine.Instance.WowDatabase; string path = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female); M2SceneNode node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); UpdateStartOutfitClasses(); UpdateMaxCharFeature(); UpdateCurrentCharFeature(); }
public static void GetAllNpcs(this NpcCollection npcs, bool isHD, bool includePath) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint npcCount = _wowDatabase.NpcCount; npcs.Clear(); for (uint i = 0; i < npcCount; ++i) { SNpc?r = _wowDatabase.GetNpc(i); if (r != null && r.Value.modelId != -1) { if (includePath) { string path = _wowDatabase.GetNpcPath(r.Value.modelDisplayId, isHD); if (path == "") { continue; } if (!Engine.Instance.WowEnvironment.IsFileExist(path) && isHD) { path = _wowDatabase.GetNpcPath(r.Value.modelDisplayId, false); } npcs.Add(new Npc() { Name = r.Value.name, Type = r.Value.type, ModelDisplayId = r.Value.modelDisplayId, ModelId = r.Value.modelId, Path = path }); } else { npcs.Add(new Npc() { Name = r.Value.name, Type = r.Value.type, ModelDisplayId = r.Value.modelDisplayId, ModelId = r.Value.modelId }); } } } }
public void FillData() { TextureNames.Clear(); WowDatabase database = Engine.Instance.WowDatabase; for (uint i = 0; i < database.TextureCount; ++i) { TextureNames.Add(new Entry() { Name = database.GetTextureFileName(i), Id = (int)i }); } textureNamesView = CollectionViewSource.GetDefaultView(TextureNames); }
public void FillData() { M2Names.Clear(); WowDatabase database = Engine.Instance.WowDatabase; for (uint i = 0; i < database.WorldModelCount; ++i) { M2Names.Add(new Entry() { Name = database.GetWorldModelName(i, false), Id = (int)i }); } m2NamesView = CollectionViewSource.GetDefaultView(M2Names); }
void _wmoSelect_MapLocalWMO_Selected(object sender, Entry entry) { WowDatabase database = Engine.Instance.WowDatabase; string path = database.GetWMOFileName((uint)entry.Id, false); WMOSceneNode node = ModelSceneService.Instance.SetMainWMOSceneNode(path); ModelEditorService.Instance.SetWireFrame(node); //update doodad names _wmoSelect.UpdateDoodadM2Names(node); //update property if (node != null) { ShellService.Instance.PropertyContent.UpdateWmoNode(node); } }
void _wmoTreeViewSelect_WmoTreeView_Selected(object sender, string wmofilename) { WowDatabase database = Engine.Instance.WowDatabase; string path = wmofilename; WMOSceneNode node = ModelSceneService.Instance.SetMainWMOSceneNode(path); ModelEditorService.Instance.SetWireFrame(node); //update doodad names _wmoTreeViewSelect.UpdateDoodadM2Names(node); //update property if (node != null) { ShellService.Instance.PropertyContent.UpdateWmoNode(node); } }
public static void GetAllSlotItems(this SlotItemCollection slotItems, M2SceneNode node) { slotItems.Clear(); if (node.Type != M2Type.MT_CHARACTER || node.IsNpc) { return; } WowDatabase wowDatabase = Engine.Instance.WowDatabase; E_CHAR_SLOTS[] slots = { E_CHAR_SLOTS.CS_HEAD, E_CHAR_SLOTS.CS_SHOULDER, E_CHAR_SLOTS.CS_SHIRT, E_CHAR_SLOTS.CS_CHEST, E_CHAR_SLOTS.CS_BELT, E_CHAR_SLOTS.CS_PANTS, E_CHAR_SLOTS.CS_BOOTS, E_CHAR_SLOTS.CS_BRACERS, E_CHAR_SLOTS.CS_GLOVES, E_CHAR_SLOTS.CS_CAPE, E_CHAR_SLOTS.CS_TABARD, E_CHAR_SLOTS.CS_HAND_LEFT, E_CHAR_SLOTS.CS_HAND_RIGHT, }; for (int i = 0; i < slots.GetLength(0); ++i) { int id = node.GetSlotItemId(slots[i]); SItem?item = wowDatabase.GetItemById(id); if (item.HasValue) { slotItems.Add(new SlotItem() { SlotName = slots[i].GetSlotName(), ItemId = item.Value.id, ItemName = item.Value.name, ModelId = item.Value.modelId, SubClassName = item.Value.subclassname }); } } }
public void FillData() { WMOLocalNames.Clear(); WowDatabase database = Engine.Instance.WowDatabase; for (uint i = 0; i < database.WmoCount; ++i) { WMOLocalNames.Add(new Entry() { Name = database.GetWMOFileName(i, true), Id = (int)i }); } wmoLocalNamesView = CollectionViewSource.GetDefaultView(WMOLocalNames); m2NamesView = CollectionViewSource.GetDefaultView(M2Names); }
public static void GetAllSets(this SetCollection sets) { WowDatabase wowDatabase = Engine.Instance.WowDatabase; uint setCount = wowDatabase.SetCount; sets.Clear(); for (uint i = 0; i < setCount; ++i) { SEntry?r = wowDatabase.GetSet(i); if (r != null) { sets.Add(new Set() { Name = r.Value.name, Id = r.Value.id }); } } }
public static void GetAllNpcs(this NpcCollection npcs) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint npcCount = _wowDatabase.NpcCount; npcs.Clear(); for (uint i = 0; i < npcCount; ++i) { SNpc?r = _wowDatabase.GetNpc(i); if (r != null && r.Value.modelId != -1) { npcs.Add(new Npc() { Name = r.Value.name, Type = r.Value.type, ModelDisplayId = r.Value.modelDisplayId, ModelId = r.Value.modelId }); } } }
private static int[] GetItemIdsByName(string name, E_CHAR_SLOTS slot, int id) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint itemCount = _wowDatabase.ItemCount; List <int> idList = new List <int>(); for (uint i = 0; i < itemCount; ++i) { SItem?r = _wowDatabase.GetItem(i); if (r.HasValue && r.Value.id != id && r.Value.name == name) { if (r.Value.IsMatchSlot(slot) && (r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1)) { idList.Add(r.Value.id); } } } return(idList.ToArray()); }
private void GetWorldM2TreeItemFiles(string path, TreeNodeEntry node) { WowEnvironment env = Engine.Instance.WowEnvironment; env.ClearOwnCascFiles(); WowDatabase database = Engine.Instance.WowDatabase; for (uint i = 0; i < database.WorldModelCount; ++i) { env.AddOwnCascFile(database.GetWorldModelName(i, false)); } env.FinishOwnCascFiles(); TreeViewFiles.Clear(); TreeNodeEntry treeNode = TreeViewEntry.TraverseAllUseOwn(path, "*", node); for (int i = 0; i < treeNode.NodeEntrys.Count; i++) { TreeViewFiles.Add(treeNode.NodeEntrys[i]); } }
public static void GetAllRidables(this RidableCollection ridables) { WowDatabase _wowDatabase = Engine.Instance.WowDatabase; uint ridableCount = _wowDatabase.RidableCount; ridables.Clear(); ridables.Add(new Ridable() { NpcId = 0, MountFlag = 0, Name = App.Current.Resources["none"] as string, ModelDisplayId = 0, ModelId = 0 }); for (uint i = 0; i < ridableCount; ++i) { SRidable?r = _wowDatabase.GetRidable(i); if (r != null) { SNpc?npc = _wowDatabase.GetNpcById(r.Value.npcid); if (npc.HasValue) { ridables.Add(new Ridable() { NpcId = r.Value.npcid, MountFlag = r.Value.mountflag, Name = npc.Value.name, ModelDisplayId = npc.Value.modelDisplayId, ModelId = npc.Value.modelId }); } } } }
private bool LoadCharacter() { string shortname = Engine.Instance.WowDatabase.GetRaceName(charInfo.Race); WowDatabase _wowDatabase = Engine.Instance.WowDatabase; string path = _wowDatabase.GetCharacterPath(shortname, charInfo.Gender != 0, true); M2SceneNode node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); if (node == null) { path = _wowDatabase.GetCharacterPath(shortname, charInfo.Gender != 0, false); node = ModelSceneService.Instance.SetMainM2SceneNode(path, false); } if (node != null) { SCharFeature charFeature = new SCharFeature(); charFeature.skinColor = charInfo.SkinColor; charFeature.hairColor = charInfo.HairColor; charFeature.hairStyle = charInfo.HairStyle; charFeature.faceType = charInfo.FaceType; charFeature.facialHair = charInfo.FacialHair; node.M2Instance.CharFeature = charFeature; } //items if (node != null) { M2Appearance appearance = node.M2Appearance; if (appearance != null) { appearance.TakeItem(charInfo.Head); appearance.TakeItem(charInfo.Shoulder); appearance.TakeItem(charInfo.Boots); appearance.TakeItem(charInfo.Belt); appearance.TakeItem(charInfo.Shirt); appearance.TakeItem(charInfo.Pants); appearance.TakeItem(charInfo.Chest); appearance.TakeItem(charInfo.Bracers); appearance.TakeItem(charInfo.Gloves); appearance.TakeItem(charInfo.HandRight); appearance.TakeItem(charInfo.HandLeft); appearance.TakeItem(charInfo.Cape); appearance.TakeItem(charInfo.Tabard); } ModelEditorService.Instance.ShowModelPart(node); ModelEditorService.Instance.ShowEditPart(node); ModelEditorService.Instance.SetWireFrame(node); ModelEditorService.Instance.SheathM2NodeWeapon(node); node.UpdateCharacter(); //update property ShellService.Instance.PropertyContent.UpdateCharacterNode(node); if (ShellService.Instance.EquipmentsWindow.IsVisible) { ShellService.Instance.EquipmentsWindow.Update(); } if (ShellService.Instance.EquipmentSelectWindow.IsVisible) { ShellService.Instance.EquipmentSelectWindow.Update(); } } Player player = Client.Instance.GetPlayer(); if (EngineService.Instance.IsGameMode && node != null && (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE)) { player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f)); } else { player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f)); } return(node != null); }
public static void GetAllSlotItemsWithSameName(this SlotItemCollection slotItems, M2SceneNode node) { slotItems.Clear(); if (node.Type != M2Type.MT_CHARACTER || node.IsNpc) { return; } WowDatabase wowDatabase = Engine.Instance.WowDatabase; E_CHAR_SLOTS[] slots = { E_CHAR_SLOTS.CS_HEAD, E_CHAR_SLOTS.CS_SHOULDER, E_CHAR_SLOTS.CS_SHIRT, E_CHAR_SLOTS.CS_CHEST, E_CHAR_SLOTS.CS_BELT, E_CHAR_SLOTS.CS_PANTS, E_CHAR_SLOTS.CS_BOOTS, E_CHAR_SLOTS.CS_BRACERS, E_CHAR_SLOTS.CS_GLOVES, E_CHAR_SLOTS.CS_CAPE, E_CHAR_SLOTS.CS_TABARD, E_CHAR_SLOTS.CS_HAND_LEFT, E_CHAR_SLOTS.CS_HAND_RIGHT, }; for (int i = 0; i < slots.GetLength(0); ++i) { int id = node.M2Instance.GetSlotItemId(slots[i]); SItem?item = wowDatabase.GetItemById(id); if (!item.HasValue || item.Value.name.Length == 0) { continue; } slotItems.Add(new SlotItem() { SlotName = slots[i].GetSlotName(), ItemId = item.Value.id, ItemName = item.Value.name, SubClassName = item.Value.subclassname }); if (slots[i] != E_CHAR_SLOTS.CS_HEAD && slots[i] != E_CHAR_SLOTS.CS_SHOULDER && slots[i] != E_CHAR_SLOTS.CS_CHEST && slots[i] != E_CHAR_SLOTS.CS_PANTS && slots[i] != E_CHAR_SLOTS.CS_GLOVES) { continue; } //add name int[] idArray = GetItemIdsByName(item.Value.name, slots[i], id); foreach (int _id in idArray) { SItem?_item = wowDatabase.GetItemById(_id); if (!_item.HasValue) { continue; } slotItems.Add(new SlotItem() { SlotName = slots[i].GetSlotName(), ItemId = _item.Value.id, ItemName = _item.Value.name, SubClassName = _item.Value.subclassname }); } } }