public void Add(uint clothingTableID, PaletteTemplate paletteTemplate = PaletteTemplate.Undef, float shade = 0.0f) { var clothingTable = DatManager.PortalDat.ReadFromDat <ClothingTable>(clothingTableID); if (!clothingTable.ClothingBaseEffects.TryGetValue(SetupId, out var baseEffect)) { return; } // palette changes if (clothingTable.ClothingSubPalEffects.TryGetValue((uint)paletteTemplate, out var palEffect)) { if (PaletteChanges == null) { PaletteChanges = new PaletteChanges(palEffect.CloSubPalettes, shade); } else { PaletteChanges.Add(palEffect.CloSubPalettes, shade); } } foreach (var objEffect in baseEffect.CloObjectEffects) { if (PartChanges == null) { PartChanges = new Dictionary <uint, PartChange>(); } // gfxobj change if (!PartChanges.TryGetValue(objEffect.Index, out var partChange)) { partChange = new PartChange(objEffect.ModelId); PartChanges.Add(objEffect.Index, partChange); } else { partChange.NewGfxObjId = objEffect.ModelId; } // texture changes foreach (var texEffect in objEffect.CloTextureEffects) { if (partChange.TextureChanges == null) { partChange.TextureChanges = new Dictionary <uint, uint>(); } partChange.TextureChanges[texEffect.OldTexture] = texEffect.NewTexture; } } }
/// <summary> /// Load a model with a ClothingTable /// </summary> public void LoadModel(uint setupID, ClothingTable clothingBase, PaletteTemplate paletteTemplate, float shade) { TextureCache.Init(); // assumed to be in Setup mode for ClothingBase GfxObjMode = false; // create the ObjDesc, describing any changes to palettes / textures / gfxobj parts var objDesc = new Model.ObjDesc(setupID, clothingBase.Id, paletteTemplate, shade); Setup = new SetupInstance(setupID, objDesc); if (ViewObject == null || ViewObject.PhysicsObj.PartArray.Setup._dat.Id != setupID) { InitObject(setupID); Camera.InitModel(Setup.Setup.BoundingBox); } ModelType = ModelType.Setup; MainWindow.Status.WriteLine($"Loading {setupID:X8} with ClothingBase {clothingBase.Id:X8}, PaletteTemplate {paletteTemplate}, and Shade {shade}"); }
public ObjDesc(uint setupID, uint clothingTableID, PaletteTemplate paletteTemplate = PaletteTemplate.Undef, float shade = 0.0f) { SetupId = setupID; Add(clothingTableID, paletteTemplate, shade); }