private void UpdateUseIFF(object sender, EventArgs e) { if (InternalChange) { return; } IffMode = IffCheck.Checked; if (IffMode) { //try create an FSOR descriptor ActiveFSOR = ActiveObject.Resource.List <FSOR>()?.FirstOrDefault(); if (ActiveFSOR == null) { ActiveFSOR = new FSOR { ChunkLabel = "3D Reconstruction info", ChunkID = 1, ChunkProcessed = true, ChunkType = "FSOR", AddedByPatch = true }; ActiveObject.Resource.MainIff.AddChunk(ActiveFSOR); } ActiveParams = ActiveFSOR.Params; } }
public void SetActiveObject(GameObject active) { ActiveObject = active; ActiveIff = active.Resource; ActiveDGRP = null; Debug3D.ShowObject(active.OBJ.GUID); UpdateDGRPList(true); var allowEdit = (ActiveObject.OBJ.ObjectType != OBJDType.Person); DGRPBox.Enabled = allowEdit; var lower = active.OBJ.ChunkParent.Filename.ToLowerInvariant(); if (!DGRP3DMesh.ParamsByIff.TryGetValue(lower, out ActiveParams)) { ActiveParams = new DGRPRCParams(); } ActiveFSOR = ActiveIff.List <FSOR>()?.FirstOrDefault(); InternalChange = true; if (ActiveFSOR == null) { IffMode = false; } else { IffMode = true; ActiveParams = ActiveFSOR.Params; } SimpleCheck.Checked = ActiveParams.Simplify; DoorCheck.Checked = ActiveParams.DoorFix; CounterCheck.Checked = ActiveParams.CounterFix; BlenderCheck.Checked = ActiveParams.BlenderTweak; Rot1.Checked = ActiveParams.Rotations[0]; Rot2.Checked = ActiveParams.Rotations[1]; Rot3.Checked = ActiveParams.Rotations[2]; Rot4.Checked = ActiveParams.Rotations[3]; IffCheck.Checked = IffMode; InternalChange = false; }