//============================================================ // <T>处理鼠标落下。</T> //============================================================ public void ProcessMouseDown(int mouseButton, int x, int y) { RMouse.ProcessDown(mouseButton); RMouse.LocationDown.Set(x, y); // 左键按下 if (mouseButton == EMouseButton.Left) { // 存储相机 _region.Camera.Store(); // 点击测试 if (RKeybord.IsPressedKey(EKeyCode.D1) || RKeybord.IsPressedKey(EKeyCode.D2) || RKeybord.IsPressedKey(EKeyCode.D3) || RKeybord.IsPressedKey(EKeyCode.D4) || RKeybord.IsPressedKey(EKeyCode.D5) || RKeybord.IsPressedKey(EKeyCode.D6) || RKeybord.IsPressedKey(EKeyCode.D7) || RKeybord.IsPressedKey(EKeyCode.D8) || RKeybord.IsPressedKey(EKeyCode.D9)) { } else { int renderableId = _techniqueDesign.HitTest(_region, x, y); FDxDesignGeometry geometry = null; if (renderableId > 0) { geometry = _region.Renderables.FindById(renderableId) as FDxDesignGeometry; } DoGeometryFocus(geometry); } // 过滤所有选择对象 _region.Renderables.FilterSelected(_renderablesSelected, false); _renderablesSelected.Store(); } }
//============================================================ private void QDsTemplateEditorForm_KeyUp(object sender, KeyEventArgs e) { // 按键抬起操作 RKeybord.ProcessUp((int)e.KeyCode); // 场景处理 _scene.ProcessKeyUp((int)e.KeyCode); }
//============================================================ private void ProcessInput() { if (RKeybord.IsPressedKey(EKeyCode.Left)) { _spatial.DoRotationY(0.1f); } else if (RKeybord.IsPressedKey(EKeyCode.Right)) { _spatial.DoRotationY(-0.1f); } }
//============================================================ public void DoGeometryFocus(FDxDesignGeometry geometry) { if (null != geometry) { bool selected = geometry.IsSelected; if (geometry.IsUi) { // 选中UI时 _region.Renderables.SetSelected(true, false); geometry.IsSelected = true; _commandCd = MakeCommandByName(geometry.MeshName); } else { // 选中渲染对象时 if (!RKeybord.IsPressedKey(EKeyCode.ShiftKey)) { _region.Renderables.SetSelected(false); } geometry.IsSelected = true; // 设置设计模式 DoDesignMode(_modeCd); // 设置位置 _spatialTranslate.Matrix.Assign(geometry.Matrix); _spatialTranslate.Update(); } } else { // 未选中任何对象 _region.Renderables.SetSelected(false); _spatialTranslate.SetVisible(false); _spatialRotation.SetVisible(false); _spatialScale.SetVisible(false); } // 设置焦点对象 if (null != geometry) { if (geometry.IsUi) { _focusGeometryUi = geometry; } else { _focusGeometry = geometry; } } else { _focusGeometryUi = geometry; _focusGeometry = geometry; } }
//============================================================ private void QDsTemplateEditorForm_KeyDown(object sender, KeyEventArgs e) { // 显示和隐藏操作界面 if (e.KeyCode == Keys.Space) { tsbCatalog_Click(sender, e); tsbProperty_Click(sender, e); } // 按键按下操作 RKeybord.ProcessDown((int)e.KeyCode); // 场景处理 _scene.ProcessKeyDown((int)e.KeyCode); }
//============================================================ public void ProcessKeyDown(int keyCode) { // 移动 if (RKeybord.IsPressedKey(EKeyCode.D1)) { _commandCd = EDxDesignCommand.MatrixTranslationX; } else if (RKeybord.IsPressedKey(EKeyCode.D2)) { _commandCd = EDxDesignCommand.MatrixTranslationY; } else if (RKeybord.IsPressedKey(EKeyCode.D3)) { _commandCd = EDxDesignCommand.MatrixTranslationZ; } // 旋转 if (RKeybord.IsPressedKey(EKeyCode.D4)) { _commandCd = EDxDesignCommand.MatrixRotationX; } else if (RKeybord.IsPressedKey(EKeyCode.D5)) { _commandCd = EDxDesignCommand.MatrixRotationY; } else if (RKeybord.IsPressedKey(EKeyCode.D6)) { _commandCd = EDxDesignCommand.MatrixRotationZ; } // 缩放 if (RKeybord.IsPressedKey(EKeyCode.D7)) { _commandCd = EDxDesignCommand.MatrixScaleX; } else if (RKeybord.IsPressedKey(EKeyCode.D8)) { _commandCd = EDxDesignCommand.MatrixScaleY; } else if (RKeybord.IsPressedKey(EKeyCode.D9)) { _commandCd = EDxDesignCommand.MatrixScaleZ; } }