private void AddModelsSekiro(IMsb msb) { foreach (var mk in LoadedModels.OrderBy(q => q.Key)) { var m = mk.Key; if (m.StartsWith("m")) { AddModelSekiro(msb, new MSBS.Model.MapPiece() { Name = m }, m); } if (m.StartsWith("h")) { AddModelSekiro(msb, new MSBS.Model.Collision() { Name = m }, m); } if (m.StartsWith("o")) { AddModelSekiro(msb, new MSBS.Model.Object() { Name = m }, m); } if (m.StartsWith("c")) { AddModelSekiro(msb, new MSBS.Model.Enemy() { Name = m }, m); } } }
private void AddModel <T>(IMsb m, string name) where T : IMsbModel, new() { var model = new T(); model.Name = name; m.Models.Add(model); }
private void AddModelsDS1(IMsb msb) { foreach (var mk in LoadedModels.OrderBy(q => q.Key)) { var m = mk.Key; if (m.StartsWith("m")) { AddModelDS1(msb, new MSB1.Model.MapPiece(), m); } if (m.StartsWith("h")) { AddModelDS1(msb, new MSB1.Model.Collision(), m); } if (m.StartsWith("o")) { AddModelDS1(msb, new MSB1.Model.Object(), m); } if (m.StartsWith("c")) { AddModelDS1(msb, new MSB1.Model.Enemy(), m); } if (m.StartsWith("n")) { AddModelDS1(msb, new MSB1.Model.Navmesh(), m); } } }
private void AddModelSekiro(IMsb m, MSBS.Model model, string name) { if (LoadedModels[name] != null) { m.Models.Add(LoadedModels[name]); return; } model.Name = name; if (model is MSBS.Model.MapPiece) { model.SibPath = $@"N:\FDP\data\Model\map\{Name}\sib\{name}.sib"; } else if (model is MSBS.Model.Object) { model.SibPath = $@"N:\FDP\data\Model\obj\{name}\sib\{name}.sib"; } else if (model is MSBS.Model.Enemy) { model.SibPath = $@"N:\FDP\data\Model\chr\{name}\sib\{name}.sib"; } else if (model is MSBS.Model.Collision) { model.SibPath = $@"N:\FDP\data\Model\map\{Name}\hkt\{name}.hkt"; } else if (model is MSBS.Model.Player) { model.SibPath = $@""; } m.Models.Add(model); }
private void AddModelDS1(IMsb m, MSB1.Model model, string name) { if (LoadedModels[name] != null) { m.Models.Add(LoadedModels[name]); return; } model.Name = name; if (model is MSB1.Model.MapPiece) { model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\sib\{name}.sib"; } else if (model is MSB1.Model.Object) { model.SibPath = $@"N:\FRPG\data\Model\obj\{name}\sib\{name}.sib"; } else if (model is MSB1.Model.Enemy) { model.SibPath = $@"N:\FRPG\data\Model\chr\{name}\sib\{name}.sib"; } else if (model is MSB1.Model.Collision) { model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\hkxwin\{name}.hkxwin"; } else if (model is MSB1.Model.Navmesh) { model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\navimesh\{name}.sib"; } m.Models.Add(model); }
public void LoadMSB(IMsb msb) { foreach (var m in msb.Models.GetEntries()) { LoadedModels.Add(m.Name, m); } foreach (var p in msb.Parts.GetEntries()) { var n = new MapEntity(this, p, MapEntity.MapEntityType.Part); Objects.Add(n); RootObject.AddChild(n); } foreach (var p in msb.Regions.GetEntries()) { var n = new MapEntity(this, p, MapEntity.MapEntityType.Region); Objects.Add(n); RootObject.AddChild(n); } foreach (var p in msb.Events.GetEntries()) { var n = new MapEntity(this, p, MapEntity.MapEntityType.Event); Objects.Add(n); RootObject.AddChild(n); } foreach (var m in Objects) { m.BuildReferenceMap(); } }
private void AddModelDS2(IMsb m, MSB2.Model model, string name) { if (LoadedModels[name] != null) { m.Models.Add(LoadedModels[name]); return; } model.Name = name; m.Models.Add(model); }
public void SerializeToMSB(IMsb msb, GameType game) { foreach (var m in Objects) { if (m.WrappedObject != null && m.WrappedObject is IMsbPart p) { msb.Parts.Add(p); if (p.ModelName != null && !LoadedModels.ContainsKey(p.ModelName)) { LoadedModels.Add(p.ModelName, null); } } else if (m.WrappedObject != null && m.WrappedObject is IMsbRegion r) { msb.Regions.Add(r); } else if (m.WrappedObject != null && m.WrappedObject is IMsbEvent e) { msb.Events.Add(e); } } if (game == GameType.DemonsSouls) { AddModelsDeS(msb); } else if (game == GameType.DarkSoulsPTDE) { AddModelsDS1(msb); } else if (game == GameType.DarkSoulsIISOTFS) { AddModelsDS2(msb); } else if (game == GameType.Bloodborne) { AddModelsBB(msb); } else if (game == GameType.DarkSoulsIII) { AddModelsDS3(msb); } else if (game == GameType.Sekiro) { AddModelsSekiro(msb); } }
private void AddModelBB(IMsb m, MSBB.Model model, string name) { if (LoadedModels[name] != null) { m.Models.Add(LoadedModels[name]); return; } var a = $@"A{Name.Substring(1, 2)}"; model.Name = name; if (model is MSBB.Model.MapPiece) { model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\sib\{name}{a}.sib"; } else if (model is MSBB.Model.Object) { model.SibPath = $@"N:\SPRJ\data\Model\obj\{name.Substring(0, 3)}\{name}\sib\{name}.sib"; } else if (model is MSBB.Model.Enemy) { // Not techincally required but doing so means that unedited bloodborne maps // will write identical to the original byte for byte if (name == "c0000") { model.SibPath = $@"N:\SPRJ\data\Model\chr\{name}\sib\{name}.SIB"; } else { model.SibPath = $@"N:\SPRJ\data\Model\chr\{name}\sib\{name}.sib"; } } else if (model is MSBB.Model.Collision) { model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\hkt\{name}{a}.hkt"; } else if (model is MSBB.Model.Navmesh) { model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\navimesh\{name}{a}.sib"; } else if (model is MSBB.Model.Other) { model.SibPath = $@""; } m.Models.Add(model); }