private void txtMod_TextChanged(object sender, EventArgs e)
        {
            try
            {
                List <SFLevelObject> objects = ((LevelDMAFile)SF64ROM.Instance.DMATable[_selectedLevelDMA]).LevelObjects;

                SFLevelObject obj = objects[_selectedGameObject];
                obj.X    = Convert.ToInt16(txtModX.Text);
                obj.XRot = Convert.ToInt16(txtModXRot.Text);
                obj.Y    = Convert.ToInt16(txtModY.Text);
                obj.YRot = Convert.ToInt16(txtModYRot.Text);
                obj.Z    = Convert.ToInt16(txtModZ.Text);
                obj.ZRot = Convert.ToInt16(txtModZRot.Text);
                objects[_selectedGameObject] = obj;


                //int levelDMAIndex = GetLevelDMAIndex();

                //_levelLoader.SaveGameObject(cbLevelSelect.SelectedIndex, F3DEXParser.SelectedGameObject);

                //_levelLoader.ExecuteDisplayLists(F3DEXParser.SelectedGameObject);
                _glControl.ReDraww();
            }
            catch (Exception ee) { };
        }
        private void tvLevelInfo_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            List <SFLevelObject> objects = ((LevelDMAFile)SF64ROM.Instance.DMATable[_selectedLevelDMA]).LevelObjects;

            //Move the camera to the object
            SFLevelObject obj = objects[_selectedGameObject];

            _glControl.Camera.MoveCameraTo((float)obj.X, (float)obj.Y, (float)obj.Z - obj.LvlPos);
        }
 public SFLevelObjectInfo(SFLevelObject obj)
 {
     _obj = obj;
 }
        public override bool LoadFromBytes(byte[] bytes)
        {
            //Need the offset before loading
            if (_levelInfoOffset == -1 || _levelHeaderOffset == -1)
            {
                return(false);
            }

            base.LoadFromBytes(bytes);

            if (LevelObjects == null)
            {
                LevelObjects = new List <SFLevelObject>();
            }

            LevelObjects.Clear();

            if (LevelScripts == null)
            {
                LevelScripts = new List <SFAdvancedObjectScript>();
            }

            LevelScripts.Clear();

            byte[] data;

            if (!_dmaData.TakeMemory(_levelHeaderOffset, LevelHeader.Size, out data))
            {
                return(false);
            }

            LevelHeader = new DataObjects.LevelHeader(_levelHeaderOffset, data);

            int levelObjectOffset = _levelInfoOffset;

            bool one = true;

            while (one)
            {
                if (!_dmaData.TakeMemory(levelObjectOffset, SFLevelObject.Size, out data))
                {
                    break;
                }

                SFLevelObject newObj = new SFLevelObject(levelObjectOffset, data);

                // default dlist offset to 0
                newObj.DListOffset = 0x00;

                // if object id == 0xffff, break out because this marks end of data!
                if (newObj.ID == 0xFFFF)
                {
                    break;
                }

                levelObjectOffset += SFLevelObject.Size;
                LevelObjects.Add(newObj);
            }

            return(true);
        }
        private void LoadModelNavigInfo()
        {
            if (_selectedLevelDMA == -1)
            {
                txtModX.TextChanged    -= txtMod_TextChanged;
                txtModXRot.TextChanged -= txtMod_TextChanged;
                txtModY.TextChanged    -= txtMod_TextChanged;
                txtModYRot.TextChanged -= txtMod_TextChanged;
                txtModZ.TextChanged    -= txtMod_TextChanged;
                txtModZRot.TextChanged -= txtMod_TextChanged;

                txtModDList.Text = string.Empty;
                txtModID.Text    = string.Empty;
                txtModPos.Text   = string.Empty;
                txtModUnk.Text   = string.Empty;
                txtModX.Text     = string.Empty;
                txtModXRot.Text  = string.Empty;
                txtModY.Text     = string.Empty;
                txtModYRot.Text  = string.Empty;
                txtModZ.Text     = string.Empty;
                txtModZRot.Text  = string.Empty;

                txtModX.TextChanged    += txtMod_TextChanged;
                txtModXRot.TextChanged += txtMod_TextChanged;
                txtModY.TextChanged    += txtMod_TextChanged;
                txtModYRot.TextChanged += txtMod_TextChanged;
                txtModZ.TextChanged    += txtMod_TextChanged;
                txtModZRot.TextChanged += txtMod_TextChanged;
            }
            else
            {
                List <SFLevelObject> objects = ((LevelDMAFile)SF64ROM.Instance.DMATable[_selectedLevelDMA]).LevelObjects;
                SFLevelObject        obj     = objects[_selectedGameObject];


                txtModX.TextChanged    -= txtMod_TextChanged;
                txtModXRot.TextChanged -= txtMod_TextChanged;
                txtModY.TextChanged    -= txtMod_TextChanged;
                txtModYRot.TextChanged -= txtMod_TextChanged;
                txtModZ.TextChanged    -= txtMod_TextChanged;
                txtModZRot.TextChanged -= txtMod_TextChanged;

                txtModDList.Text = ByteHelper.DisplayValue(obj.DListOffset);
                txtModID.Text    = obj.ID.ToString();
                txtModPos.Text   = obj.LvlPos.ToString();
                txtModUnk.Text   = obj.Unk.ToString();
                txtModX.Text     = obj.X.ToString();
                txtModXRot.Text  = obj.XRot.ToString();
                txtModY.Text     = obj.Y.ToString();
                txtModYRot.Text  = obj.YRot.ToString();
                txtModZ.Text     = obj.Z.ToString();
                txtModZRot.Text  = obj.ZRot.ToString();

                txtModX.TextChanged    += txtMod_TextChanged;
                txtModXRot.TextChanged += txtMod_TextChanged;
                txtModY.TextChanged    += txtMod_TextChanged;
                txtModYRot.TextChanged += txtMod_TextChanged;
                txtModZ.TextChanged    += txtMod_TextChanged;
                txtModZRot.TextChanged += txtMod_TextChanged;
            }
        }