}
TextureProjection g_defaultTextureProjection;
+
const TextureProjection& TextureTransform_getDefault(){
TexDef_Construct_Default( g_defaultTextureProjection );
return g_defaultTextureProjection;
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() );
Instance_getSelectable( instance )->setSelected( true );
}
}
+ else{
+ return false;
+ }
return true;
}
};
Scene_ForEachSelectedBrush_ForEachFaceInstance(graph, [&](FaceInstance &face) {
printf("checking %s = %s\n", face.getFace().GetShader(), name);
if (shader_equal(face.getFace().GetShader(), name)) {
- face.setSelected(SelectionSystem::eFace, true);
- }
+ face.setSelected( SelectionSystem::eFace, true );
+ }
});
}
if (!done) {
done = true;
face.GetTexdef(projection);
- }
+}
});
}
public:
filter_face_shader( const char* shader ) : m_shader( shader ){
}
+
bool filter( const Face& face ) const {
return shader_equal( face.GetShader(), m_shader );
}
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 ) );
}
public:
filter_face_flags( int flags ) : m_flags( flags ){
}
+
bool filter( const Face& face ) const {
return ( face.getShader().shaderFlags() & m_flags ) != 0;
}
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;
}
public:
filter_brush_any_face( FaceFilter* filter ) : m_filter( filter ){
}
+
bool filter( const Brush& brush ) const {
bool filtered = false;
Brush_forEachFace(brush, [&](Face &face) {
filter_face_shader_prefix g_filter_face_caulk_ja( "textures/system/caulk" );
filter_brush_all_faces g_filter_brush_caulk_ja( &g_filter_face_caulk_ja );
-filter_face_shader_prefix g_filter_face_liquids( "textures/liquids/" );
+filter_face_flags g_filter_face_liquids( QER_LIQUID );
filter_brush_any_face g_filter_brush_liquids( &g_filter_face_liquids );
+filter_face_shader_prefix g_filter_face_liquidsdir( "textures/liquids/" );
+filter_brush_any_face g_filter_brush_liquidsdir( &g_filter_face_liquidsdir );
+
filter_face_shader g_filter_face_hint( "textures/common/hint" );
filter_brush_any_face g_filter_brush_hint( &g_filter_face_hint );
+filter_face_shader g_filter_face_hintlocal( "textures/common/hintlocal" );
+filter_brush_any_face g_filter_brush_hintlocal( &g_filter_face_hintlocal );
+
filter_face_shader g_filter_face_hint_q2( "textures/hint" );
filter_brush_any_face g_filter_brush_hint_q2( &g_filter_face_hint_q2 );
filter_face_shader g_filter_face_hint_ja( "textures/system/hint" );
filter_brush_any_face g_filter_brush_hint_ja( &g_filter_face_hint_ja );
+filter_face_shader g_filter_face_subtlehint( "textures/common/subtlehint" );
+filter_brush_any_face g_filter_brush_subtlehint( &g_filter_face_subtlehint );
+
filter_face_shader g_filter_face_areaportal( "textures/common/areaportal" );
-filter_brush_all_faces g_filter_brush_areaportal( &g_filter_face_areaportal );
+filter_brush_any_face g_filter_brush_areaportal( &g_filter_face_areaportal );
filter_face_shader g_filter_face_visportal( "textures/editor/visportal" );
filter_brush_any_face g_filter_brush_visportal( &g_filter_face_visportal );
filter_face_shader g_filter_face_lightgrid( "textures/common/lightgrid" );
filter_brush_all_faces g_filter_brush_lightgrid( &g_filter_face_lightgrid );
-filter_face_flags g_filter_face_translucent( QER_TRANS );
-filter_brush_all_faces g_filter_brush_translucent( &g_filter_face_translucent );
+filter_face_flags g_filter_face_translucent( QER_TRANS | QER_ALPHATEST );
+filter_brush_any_face g_filter_brush_translucent( &g_filter_face_translucent );
filter_face_contents g_filter_face_detail( BRUSH_DETAIL_MASK );
filter_brush_all_faces g_filter_brush_detail( &g_filter_face_detail );
add_face_filter( g_filter_face_caulk, EXCLUDE_CAULK );
add_face_filter( g_filter_face_caulk_ja, EXCLUDE_CAULK );
add_brush_filter( g_filter_brush_liquids, EXCLUDE_LIQUIDS );
+ add_brush_filter( g_filter_brush_liquidsdir, EXCLUDE_LIQUIDS );
add_brush_filter( g_filter_brush_hint, EXCLUDE_HINTSSKIPS );
+ add_brush_filter( g_filter_brush_hintlocal, EXCLUDE_HINTSSKIPS );
add_brush_filter( g_filter_brush_hint_q2, EXCLUDE_HINTSSKIPS );
add_brush_filter( g_filter_brush_hint_ja, EXCLUDE_HINTSSKIPS );
+ add_brush_filter( g_filter_brush_subtlehint, EXCLUDE_HINTSSKIPS );
add_brush_filter( g_filter_brush_clusterportal, EXCLUDE_CLUSTERPORTALS );
add_brush_filter( g_filter_brush_visportal, EXCLUDE_VISPORTALS );
add_brush_filter( g_filter_brush_areaportal, EXCLUDE_AREAPORTALS );
BrushMakeSided( std::size_t count )
: m_count( count ){
}
+
void set(){
Scene_BrushConstructPrefab( GlobalSceneGraph(), eBrushPrism, m_count, TextureBrowser_GetSelectedShader( GlobalTextureBrowser() ) );
}
-typedef MemberCaller<BrushMakeSided, &BrushMakeSided::set> SetCaller;
+
+typedef MemberCaller<BrushMakeSided, void(), &BrushMakeSided::set> SetCaller;
};
BrushPrefab( EBrushPrefab type )
: m_type( type ){
}
+
void set(){
DoSides( m_type, axis_for_viewtype( GetViewAxis() ) );
}
-typedef MemberCaller<BrushPrefab, &BrushPrefab::set> SetCaller;
+
+typedef MemberCaller<BrushPrefab, void(), &BrushPrefab::set> SetCaller;
};
BrushPrefab g_brushprism( eBrushPrism );
void FlipClip();
+
void SplitClip();
+
void Clip();
+
void OnClipMode( bool enable );
+
bool ClipMode();
}
-Callback g_texture_lock_status_changed;
-BoolExportCaller g_texdef_movelock_caller( g_brush_texturelock_enabled );
+Callback<void()> g_texture_lock_status_changed;
+ConstReferenceCaller<bool, void(const Callback<void(bool)> &), PropertyImpl<bool>::Export> g_texdef_movelock_caller( g_brush_texturelock_enabled );
ToggleItem g_texdef_movelock_item( g_texdef_movelock_caller );
void Texdef_ToggleMoveLock(){
}
-
-
-
void Brush_registerCommands(){
- GlobalToggles_insert( "TogTexLock", FreeCaller<Texdef_ToggleMoveLock>(), 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 ) );
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<ClipSelected>(), Accelerator( GDK_KEY_Return ) );
- GlobalCommands_insert( "SplitSelected", FreeCaller<SplitSelected>(), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_SHIFT_MASK ) );
- GlobalCommands_insert( "FlipClip", FreeCaller<FlipClipper>(), 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<Select_MakeDetail>(), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) );
- GlobalCommands_insert( "MakeStructural", FreeCaller<Select_MakeStructural>(), 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 ){
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, "CSG _Subtract", "CSGSubtract" );
create_menu_item_with_mnemonic( menu_in_menu, "CSG _Merge", "CSGMerge" );
+ create_menu_item_with_mnemonic( menu_in_menu, "Make _Room", "CSGRoom" );
+ create_menu_item_with_mnemonic( menu_in_menu, "CSG _Tool", "CSGTool" );
}
menu_separator( menu );
{
menu_separator( menu );
create_menu_item_with_mnemonic( menu, "Make detail", "MakeDetail" );
create_menu_item_with_mnemonic( menu, "Make structural", "MakeStructural" );
- create_menu_item_with_mnemonic( menu, "Snap selection to _grid", "SnapToGrid" );
+// create_menu_item_with_mnemonic( menu, "Snap selection to _grid", "SnapToGrid" );
create_check_menu_item_with_mnemonic( menu, "Texture Lock", "TogTexLock" );
menu_separator( menu );