* bindable commands EntityMovePrimitivesToLast, EntityMovePrimitivesToFirst, EntityUngroup, EntityUngroupPrimitives

This commit is contained in:
Garux
2018-06-10 01:27:49 +03:00
parent 645c2f479c
commit ed151906bd
5 changed files with 36 additions and 5 deletions

View File

@@ -185,6 +185,10 @@ void Scene_EntitySetClassname_Selected( const char* classname ){
}
}
void Entity_ungroup(){
Scene_EntitySetClassname_Selected( "worldspawn" );
}
#if 0
void Entity_ungroupSelected(){
if ( GlobalSelectionSystem().countSelected() < 1 ) {
@@ -296,14 +300,14 @@ void Entity_moveSelectedPrimitives(){
}
}
#else
/// moves selected primitives to entity, which is or its primitive is ultimateSelected()
void Entity_moveSelectedPrimitives(){
/// moves selected primitives to entity, which is or its primitive is ultimateSelected() or firstSelected()
void Entity_moveSelectedPrimitives( bool toLast ){
if ( GlobalSelectionSystem().countSelected() < 2 ) {
globalErrorStream() << "Source and target entity primitives should be selected!\n";
return;
}
const scene::Path& path = GlobalSelectionSystem().ultimateSelected().path();
const scene::Path& path = toLast? GlobalSelectionSystem().ultimateSelected().path() : GlobalSelectionSystem().firstSelected().path();
scene::Node& node = ( !Node_isEntity( path.top() ) && path.size() > 1 )? path.parent() : path.top();
if ( Node_isEntity( node ) && node_is_group( node ) ) {
@@ -313,6 +317,12 @@ void Entity_moveSelectedPrimitives(){
Scene_parentSelectedBrushesToEntity( GlobalSceneGraph(), node );
}
}
void Entity_moveSelectedPrimitivesToLast(){
Entity_moveSelectedPrimitives( true );
}
void Entity_moveSelectedPrimitivesToFirst(){
Entity_moveSelectedPrimitives( false );
}
#endif
@@ -495,6 +505,10 @@ void Entity_createFromSelection( const char* name, const Vector3& origin ){
}
}
void Entity_ungroupSelectedPrimitives(){
Entity_createFromSelection( "worldspawn", g_vector3_identity );
}
/* scale color so that at least one component is at 1.0F */
void NormalizeColor( Vector3& color ){
@@ -688,11 +702,17 @@ void Entity_constructMenu( GtkMenu* menu ){
if ( g_pGameDescription->mGameType == "nexuiz" || g_pGameDescription->mGameType == "q1" ) {
create_menu_item_with_mnemonic( menu, "_KillConnect Entities", "EntitiesKillConnect" );
}
create_menu_item_with_mnemonic( menu, "_Move Primitives to Entity", "EntityMovePrimitives" );
create_menu_item_with_mnemonic( menu, "_Move Primitives to Entity", "EntityMovePrimitivesToLast" );
create_menu_item_with_mnemonic( menu, "_Select Color...", "EntityColorSet" );
create_menu_item_with_mnemonic( menu, "_Normalize Color", "EntityColorNormalize" );
}
void Entity_registerShortcuts(){
command_connect_accelerator( "EntityMovePrimitivesToFirst" );
command_connect_accelerator( "EntityUngroup" );
command_connect_accelerator( "EntityUngroupPrimitives" );
}
#include "preferencesystem.h"
@@ -704,7 +724,10 @@ void Entity_Construct(){
GlobalCommands_insert( "EntitiesConnect", FreeCaller<Entity_connectSelected>(), Accelerator( 'K', (GdkModifierType)GDK_CONTROL_MASK ) );
if ( g_pGameDescription->mGameType == "nexuiz" || g_pGameDescription->mGameType == "q1" )
GlobalCommands_insert( "EntitiesKillConnect", FreeCaller<Entity_killconnectSelected>(), Accelerator( 'K', (GdkModifierType)GDK_SHIFT_MASK ) );
GlobalCommands_insert( "EntityMovePrimitives", FreeCaller<Entity_moveSelectedPrimitives>(), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) );
GlobalCommands_insert( "EntityMovePrimitivesToLast", FreeCaller<Entity_moveSelectedPrimitivesToLast>(), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) );
GlobalCommands_insert( "EntityMovePrimitivesToFirst", FreeCaller<Entity_moveSelectedPrimitivesToFirst>() );
GlobalCommands_insert( "EntityUngroup", FreeCaller<Entity_ungroup>() );
GlobalCommands_insert( "EntityUngroupPrimitives", FreeCaller<Entity_ungroupSelectedPrimitives>() );
GlobalToggles_insert( "ShowLightRadiuses", FreeCaller<ToggleShowLightRadii>(), ToggleItem::AddCallbackCaller( g_show_lightradii_item ) );