X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fbrushmanip.cpp;h=fc3054e1516d6e308656587e729fadb3b523143f;hb=73afa2885eded3443055c49cdba7e225af109078;hp=528341d92399f92aa5b50c43eeac52afa49cdb73;hpb=18d60f90d7603cb420150739251cf98519c57406;p=xonotic%2Fnetradiant.git diff --git a/radiant/brushmanip.cpp b/radiant/brushmanip.cpp index 528341d9..fc3054e1 100644 --- a/radiant/brushmanip.cpp +++ b/radiant/brushmanip.cpp @@ -570,6 +570,7 @@ void Scene_BrushFitTexture_Component_Selected( scene::Graph& graph, float s_repe } TextureProjection g_defaultTextureProjection; + const TextureProjection& TextureTransform_getDefault(){ TexDef_Construct_Default( g_defaultTextureProjection ); return g_defaultTextureProjection; @@ -617,6 +618,7 @@ public: BrushSelectByShaderWalker( const char* name ) : m_name( name ){ } + bool pre( const scene::Path& path, scene::Instance& instance ) const { if ( path.top().get().visible() ) { Brush* brush = Node_getBrush( path.top() ); @@ -741,6 +743,7 @@ const char* m_shader; public: filter_face_shader( const char* shader ) : m_shader( shader ){ } + bool filter( const Face& face ) const { return shader_equal( face.GetShader(), m_shader ); } @@ -752,6 +755,7 @@ const char* m_prefix; public: filter_face_shader_prefix( const char* prefix ) : m_prefix( prefix ){ } + bool filter( const Face& face ) const { return shader_equal_n( face.GetShader(), m_prefix, strlen( m_prefix ) ); } @@ -763,6 +767,7 @@ int m_flags; public: filter_face_flags( int flags ) : m_flags( flags ){ } + bool filter( const Face& face ) const { return ( face.getShader().shaderFlags() & m_flags ) != 0; } @@ -774,6 +779,7 @@ int m_contents; public: filter_face_contents( int contents ) : m_contents( contents ){ } + bool filter( const Face& face ) const { return ( face.getShader().m_flags.m_contentFlags & m_contents ) != 0; } @@ -787,6 +793,7 @@ FaceFilter* m_filter; public: filter_brush_any_face( FaceFilter* filter ) : m_filter( filter ){ } + bool filter( const Brush& brush ) const { bool filtered = false; Brush_forEachFace(brush, [&](Face &face) { @@ -1128,9 +1135,11 @@ public: BrushMakeSided( std::size_t count ) : m_count( count ){ } + void set(){ Scene_BrushConstructPrefab( GlobalSceneGraph(), eBrushPrism, m_count, TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) ); } + typedef MemberCaller SetCaller; }; @@ -1163,9 +1172,11 @@ public: BrushPrefab( EBrushPrefab type ) : m_type( type ){ } + void set(){ DoSides( m_type, axis_for_viewtype( GetViewAxis() ) ); } + typedef MemberCaller SetCaller; }; @@ -1176,9 +1187,13 @@ BrushPrefab g_brushrock( eBrushRock ); void FlipClip(); + void SplitClip(); + void Clip(); + void OnClipMode( bool enable ); + bool ClipMode(); @@ -1202,7 +1217,7 @@ void FlipClipper(){ Callback g_texture_lock_status_changed; -BoolExportCaller g_texdef_movelock_caller( g_brush_texturelock_enabled ); +ConstReferenceCaller &), PropertyImpl::Export> g_texdef_movelock_caller( g_brush_texturelock_enabled ); ToggleItem g_texdef_movelock_item( g_texdef_movelock_caller ); void Texdef_ToggleMoveLock(){ @@ -1212,11 +1227,8 @@ void Texdef_ToggleMoveLock(){ } - - - void Brush_registerCommands(){ - GlobalToggles_insert( "TogTexLock", FreeCaller(), ToggleItem::AddCallbackCaller( g_texdef_movelock_item ), Accelerator( 'T', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalToggles_insert( "TogTexLock", makeCallbackF(Texdef_ToggleMoveLock), ToggleItem::AddCallbackCaller( g_texdef_movelock_item ), Accelerator( 'T', (GdkModifierType)GDK_SHIFT_MASK ) ); GlobalCommands_insert( "BrushPrism", BrushPrefab::SetCaller( g_brushprism ) ); GlobalCommands_insert( "BrushCone", BrushPrefab::SetCaller( g_brushcone ) ); @@ -1231,12 +1243,12 @@ void Brush_registerCommands(){ GlobalCommands_insert( "Brush8Sided", BrushMakeSided::SetCaller( g_brushmakesided8 ), Accelerator( '8', (GdkModifierType)GDK_CONTROL_MASK ) ); GlobalCommands_insert( "Brush9Sided", BrushMakeSided::SetCaller( g_brushmakesided9 ), Accelerator( '9', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "ClipSelected", FreeCaller(), Accelerator( GDK_KEY_Return ) ); - GlobalCommands_insert( "SplitSelected", FreeCaller(), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "FlipClip", FreeCaller(), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "ClipSelected", makeCallbackF(ClipSelected), Accelerator( GDK_KEY_Return ) ); + GlobalCommands_insert( "SplitSelected", makeCallbackF(SplitSelected), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "FlipClip", makeCallbackF(FlipClipper), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "MakeDetail", FreeCaller(), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "MakeStructural", FreeCaller(), Accelerator( 'S', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); + GlobalCommands_insert( "MakeDetail", makeCallbackF(Select_MakeDetail), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "MakeStructural", makeCallbackF(Select_MakeStructural), Accelerator( 'S', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); } void Brush_constructMenu( ui::Menu menu ){ @@ -1250,7 +1262,8 @@ void Brush_constructMenu( ui::Menu menu ){ if ( g_Layout_enableDetachableMenus.m_value ) { menu_tearoff( menu_in_menu ); } - create_menu_item_with_mnemonic( menu_in_menu, "Make _Hollow", "CSGHollow" ); + create_menu_item_with_mnemonic( menu_in_menu, "Make _Hollow", "CSGMakeHollow" ); + create_menu_item_with_mnemonic( menu_in_menu, "Make _Room", "CSGMakeRoom" ); create_menu_item_with_mnemonic( menu_in_menu, "CSG _Subtract", "CSGSubtract" ); create_menu_item_with_mnemonic( menu_in_menu, "CSG _Merge", "CSGMerge" ); }