//============================================================ // <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(); } }
//============================================================ 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; } }
//============================================================ public override T Create <T>(EDxObject objectCd) { object value = null; switch (objectCd) { case EDxObject.ModelGeometry: value = new FDxDesignGeometry(); break; case EDxObject.ModelSpatial: value = new FDxSpatial(); break; } if (null == value) { value = base.Create <T>(objectCd); } return((T)value); }
//============================================================ public void DoGeometryBlur(FDxDesignGeometry geometry) { _focusGeometry = null; }