示例#1
0
        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;
            }
        }
示例#2
0
        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;
        }