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; } }