[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28791] trunk/blender: Logic UI: copy logic operator (old Ctrl+C) + add logics (shift+a)
Dalai Felinto
dfelinto at gmail.com
Sun May 16 18:28:51 CEST 2010
Revision: 28791
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28791
Author: dfelinto
Date: 2010-05-16 18:28:50 +0200 (Sun, 16 May 2010)
Log Message:
-----------
Logic UI: copy logic operator (old Ctrl+C) + add logics (shift+a)
According to Matt the RMB->Copy to selected wouldn't work for logics because the copy we need is for the whole logic (s/c/a). So (at least for the time been), copy logic is possible again.
It work as 2.49 (replacing the existent logic).
Add Logics is a python menu to give quick access to add logics. I have to see how to put that in Add Menu. I should be easy, but I'll leave it for later.
Modified Paths:
--------------
trunk/blender/release/scripts/ui/space_logic.py
trunk/blender/source/blender/editors/object/object_constraint.c
trunk/blender/source/blender/editors/space_logic/logic_ops.c
trunk/blender/source/blender/editors/space_logic/space_logic.c
Modified: trunk/blender/release/scripts/ui/space_logic.py
===================================================================
--- trunk/blender/release/scripts/ui/space_logic.py 2010-05-16 12:15:04 UTC (rev 28790)
+++ trunk/blender/release/scripts/ui/space_logic.py 2010-05-16 16:28:50 UTC (rev 28791)
@@ -46,9 +46,18 @@
row.prop(prop, "debug", text="", toggle=True, icon='INFO')
row.operator("object.game_property_remove", text="", icon='X').index = i
+class LOGIC_MT_logicbricks_add(bpy.types.Menu):
+ bl_label = "Add"
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_menu_enum("logic.sensor_add", "type", text="Sensor")
+ layout.operator_menu_enum("logic.controller_add", "type", text="Controller")
+ layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator")
+
classes = [
- LOGIC_PT_properties]
+ LOGIC_PT_properties, LOGIC_MT_logicbricks_add]
def register():
Modified: trunk/blender/source/blender/editors/object/object_constraint.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_constraint.c 2010-05-16 12:15:04 UTC (rev 28790)
+++ trunk/blender/source/blender/editors/object/object_constraint.c 2010-05-16 16:28:50 UTC (rev 28791)
@@ -1340,7 +1340,7 @@
void OBJECT_OT_constraint_copy(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Copy Constraints to Others";
+ ot->name= "Copy Constraints to Selected";
ot->description = "Copy constraints to other selected objects.";
ot->idname= "OBJECT_OT_constraint_copy";
Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c 2010-05-16 12:15:04 UTC (rev 28790)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c 2010-05-16 16:28:50 UTC (rev 28791)
@@ -533,6 +533,48 @@
prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add");
}
+/* Copy Routines */
+
+static int logicbricks_copy_exec(bContext *C, wmOperator *op)
+{
+ Object *ob=ED_object_active_context(C);
+
+ CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) {
+ if(ob != ob_iter) {
+ if (ob->data != ob_iter->data){
+ copy_sensors(&ob_iter->sensors, &ob->sensors);
+ copy_controllers(&ob_iter->controllers, &ob->controllers);
+ copy_actuators(&ob_iter->actuators, &ob->actuators);
+ }
+
+ if(ob_iter->totcol==ob->totcol) {
+ ob_iter->actcol= ob->actcol;
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter);
+ }
+ }
+ }
+ CTX_DATA_END;
+
+ WM_event_add_notifier(C, NC_LOGIC, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+void LOGIC_OT_bricks_copy(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy Logic Bricks to Selected";
+ ot->description = "Copy logic bricks to other selected objects.";
+ ot->idname= "LOGIC_OT_bricks_copy";
+
+ /* api callbacks */
+ ot->exec= logicbricks_copy_exec;
+ ot->poll= ED_operator_object_active_editable;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
void ED_operatortypes_logic(void)
{
WM_operatortype_append(LOGIC_OT_sensor_remove);
@@ -541,4 +583,5 @@
WM_operatortype_append(LOGIC_OT_controller_add);
WM_operatortype_append(LOGIC_OT_actuator_remove);
WM_operatortype_append(LOGIC_OT_actuator_add);
+ WM_operatortype_append(LOGIC_OT_bricks_copy);
}
Modified: trunk/blender/source/blender/editors/space_logic/space_logic.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/space_logic.c 2010-05-16 12:15:04 UTC (rev 28790)
+++ trunk/blender/source/blender/editors/space_logic/space_logic.c 2010-05-16 16:28:50 UTC (rev 28791)
@@ -182,6 +182,7 @@
WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "LOGIC_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "LOGIC_MT_logicbricks_add", AKEY, KM_PRESS, KM_SHIFT, 0);
}
static void logic_refresh(const bContext *C, ScrArea *sa)
More information about the Bf-blender-cvs
mailing list