* region XY: only deselect excluded objects for convenience
This commit is contained in:
parent
12d010446b
commit
213b680a3c
|
|
@ -866,12 +866,9 @@ inline void Instance_setSelected( scene::Instance& instance, bool selected ){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool Instance_isSelected( scene::Instance& instance ){
|
inline bool Instance_isSelected( const scene::Instance& instance ){
|
||||||
Selectable* selectable = Instance_getSelectable( instance );
|
const Selectable* selectable = Instance_getSelectable( instance );
|
||||||
if ( selectable != 0 ) {
|
return selectable != 0 && selectable->isSelected();
|
||||||
return selectable->isSelected();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline scene::Instance& findInstance( const scene::Path& path ){
|
inline scene::Instance& findInstance( const scene::Path& path ){
|
||||||
|
|
|
||||||
|
|
@ -1537,11 +1537,6 @@ void Scene_Exclude_All( bool exclude ){
|
||||||
GlobalSceneGraph().traverse( ExcludeAllWalker( exclude ) );
|
GlobalSceneGraph().traverse( ExcludeAllWalker( exclude ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Instance_isSelected( const scene::Instance& instance ){
|
|
||||||
const Selectable* selectable = Instance_getSelectable( instance );
|
|
||||||
return selectable != 0 && selectable->isSelected();
|
|
||||||
}
|
|
||||||
|
|
||||||
class ExcludeSelectedWalker : public scene::Graph::Walker
|
class ExcludeSelectedWalker : public scene::Graph::Walker
|
||||||
{
|
{
|
||||||
bool m_exclude;
|
bool m_exclude;
|
||||||
|
|
@ -1562,25 +1557,19 @@ void Scene_Exclude_Selected( bool exclude ){
|
||||||
|
|
||||||
class ExcludeRegionedWalker : public scene::Graph::Walker
|
class ExcludeRegionedWalker : public scene::Graph::Walker
|
||||||
{
|
{
|
||||||
bool m_exclude;
|
const bool m_exclude;
|
||||||
|
const AABB m_region = aabb_for_minmax( g_region_mins, g_region_maxs );
|
||||||
public:
|
public:
|
||||||
ExcludeRegionedWalker( bool exclude )
|
ExcludeRegionedWalker( bool exclude )
|
||||||
: m_exclude( exclude ){
|
: m_exclude( exclude ){
|
||||||
}
|
}
|
||||||
bool pre( const scene::Path& path, scene::Instance& instance ) const {
|
bool pre( const scene::Path& path, scene::Instance& instance ) const {
|
||||||
if( !path.top().get().isRoot() ) /* don't touch model node: disabling one will disable all its instances! */
|
if( !path.top().get().isRoot() ){ /* don't touch model node: disabling one will disable all its instances! */
|
||||||
exclude_node(
|
const bool exclude = m_exclude == aabb_intersects_aabb( instance.worldAABB(), m_region );
|
||||||
path.top(),
|
exclude_node( path.top(), exclude );
|
||||||
!(
|
if( exclude )
|
||||||
(
|
Instance_setSelected( instance, false );
|
||||||
aabb_intersects_aabb(
|
}
|
||||||
instance.worldAABB(),
|
|
||||||
aabb_for_minmax( g_region_mins, g_region_maxs )
|
|
||||||
) != 0
|
|
||||||
) ^ m_exclude
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -1614,12 +1603,9 @@ void Map_ApplyRegion(){
|
||||||
g_region_item.update();
|
g_region_item.update();
|
||||||
|
|
||||||
Scene_Exclude_Region( false );
|
Scene_Exclude_Region( false );
|
||||||
/* newly created brushes have to visible! */
|
/* newly created brushes have to be visible! */
|
||||||
if( scene::Node* w = Map_FindWorldspawn( g_map ) )
|
if( scene::Node* w = Map_FindWorldspawn( g_map ) )
|
||||||
exclude_node( *w, false );
|
exclude_node( *w, false );
|
||||||
|
|
||||||
if( GlobalSelectionSystem().countSelected() != 0 )
|
|
||||||
GlobalSelectionSystem().setSelectedAll( false );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1638,7 +1624,7 @@ void Map_RegionSelectedBrushes(){
|
||||||
Select_GetBounds( g_region_mins, g_region_maxs );
|
Select_GetBounds( g_region_mins, g_region_maxs );
|
||||||
|
|
||||||
Scene_Exclude_Selected( false );
|
Scene_Exclude_Selected( false );
|
||||||
/* newly created brushes have to visible! */
|
/* newly created brushes have to be visible! */
|
||||||
if( scene::Node* w = Map_FindWorldspawn( g_map ) )
|
if( scene::Node* w = Map_FindWorldspawn( g_map ) )
|
||||||
exclude_node( *w, false );
|
exclude_node( *w, false );
|
||||||
|
|
||||||
|
|
@ -1669,8 +1655,6 @@ void Map_RegionBounds( const AABB& bounds ){
|
||||||
g_region_mins = vector3_subtracted( bounds.origin, bounds.extents );
|
g_region_mins = vector3_subtracted( bounds.origin, bounds.extents );
|
||||||
g_region_maxs = vector3_added( bounds.origin, bounds.extents );
|
g_region_maxs = vector3_added( bounds.origin, bounds.extents );
|
||||||
|
|
||||||
// deleteSelection();
|
|
||||||
|
|
||||||
Map_ApplyRegion();
|
Map_ApplyRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1684,10 +1668,11 @@ void Map_RegionBrush( void ){
|
||||||
scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
|
scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
|
||||||
Map_RegionBounds( instance.worldAABB() );
|
Map_RegionBounds( instance.worldAABB() );
|
||||||
|
|
||||||
if( Selectable* selectable = Instance_getSelectable( instance ) ){
|
if( GlobalSelectionSystem().countSelected() != 1 ){
|
||||||
selectable->setSelected( true );
|
GlobalSelectionSystem().setSelectedAll( false );
|
||||||
deleteSelection();
|
Instance_setSelected( instance, true );
|
||||||
}
|
}
|
||||||
|
deleteSelection();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
globalErrorStream() << "Nothing is selected!\n";
|
globalErrorStream() << "Nothing is selected!\n";
|
||||||
|
|
@ -2079,17 +2064,17 @@ void RegionOff(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegionXY(){
|
void RegionXY(){
|
||||||
VIEWTYPE viewtype = GlobalXYWnd_getCurrentViewType();
|
const VIEWTYPE viewtype = GlobalXYWnd_getCurrentViewType();
|
||||||
int nDim1 = ( viewtype == YZ ) ? 1 : 0;
|
const int nDim1 = ( viewtype == YZ ) ? 1 : 0;
|
||||||
int nDim2 = ( viewtype == XY ) ? 1 : 2;
|
const int nDim2 = ( viewtype == XY ) ? 1 : 2;
|
||||||
int nDim = static_cast<int>( viewtype );
|
const int nDim = static_cast<int>( viewtype );
|
||||||
XYWnd* wnd = g_pParentWnd->ActiveXY();
|
const XYWnd& wnd = *( g_pParentWnd->ActiveXY() );
|
||||||
Vector3 min, max;
|
Vector3 min, max;
|
||||||
min[nDim1] = wnd->GetOrigin()[nDim1] - 0.5f * wnd->Width() / wnd->Scale();
|
min[nDim1] = wnd.GetOrigin()[nDim1] - 0.5f * wnd.Width() / wnd.Scale();
|
||||||
min[nDim2] = wnd->GetOrigin()[nDim2] - 0.5f * wnd->Height() / wnd->Scale();
|
min[nDim2] = wnd.GetOrigin()[nDim2] - 0.5f * wnd.Height() / wnd.Scale();
|
||||||
min[nDim] = g_MinWorldCoord + 64;
|
min[nDim] = g_MinWorldCoord + 64;
|
||||||
max[nDim1] = wnd->GetOrigin()[nDim1] + 0.5f * wnd->Width() / wnd->Scale();
|
max[nDim1] = wnd.GetOrigin()[nDim1] + 0.5f * wnd.Width() / wnd.Scale();
|
||||||
max[nDim2] = wnd->GetOrigin()[nDim2] + 0.5f * wnd->Height() / wnd->Scale();
|
max[nDim2] = wnd.GetOrigin()[nDim2] + 0.5f * wnd.Height() / wnd.Scale();
|
||||||
max[nDim] = g_MaxWorldCoord - 64;
|
max[nDim] = g_MaxWorldCoord - 64;
|
||||||
|
|
||||||
Map_RegionXY( min, max );
|
Map_RegionXY( min, max );
|
||||||
|
|
|
||||||
|
|
@ -687,7 +687,7 @@ void XYWnd::releaseStates(){
|
||||||
GlobalShaderCache().release( "$XY_OVERLAY" );
|
GlobalShaderCache().release( "$XY_OVERLAY" );
|
||||||
}
|
}
|
||||||
|
|
||||||
const Vector3& XYWnd::GetOrigin(){
|
const Vector3& XYWnd::GetOrigin() const {
|
||||||
return m_vOrigin;
|
return m_vOrigin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ static void recaptureStates(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void PositionView( const Vector3& position );
|
void PositionView( const Vector3& position );
|
||||||
const Vector3& GetOrigin();
|
const Vector3& GetOrigin() const;
|
||||||
void SetOrigin( const Vector3& origin );
|
void SetOrigin( const Vector3& origin );
|
||||||
void Scroll( int x, int y );
|
void Scroll( int x, int y );
|
||||||
|
|
||||||
|
|
@ -244,13 +244,13 @@ VIEWTYPE GetViewType(){
|
||||||
return m_viewType;
|
return m_viewType;
|
||||||
}
|
}
|
||||||
void SetScale( float f );
|
void SetScale( float f );
|
||||||
float Scale(){
|
float Scale() const {
|
||||||
return m_fScale;
|
return m_fScale;
|
||||||
}
|
}
|
||||||
int Width(){
|
int Width() const {
|
||||||
return m_nWidth;
|
return m_nWidth;
|
||||||
}
|
}
|
||||||
int Height(){
|
int Height() const {
|
||||||
return m_nHeight;
|
return m_nHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user