Paste Code
Paste Blends
Paste Images
Index: source/blender/editors/space_logic/logic_window.c
===================================================================
--- source/blender/editors/space_logic/logic_window.c (revision 32619)
+++ source/blender/editors/space_logic/logic_window.c (working copy)
@@ -3867,9 +3867,11 @@
switch (RNA_enum_get(ptr, "mode"))
{
case ACT_EDOB_ADD_OBJECT:
- row = uiLayoutRow(layout, 0);
+ split = uiLayoutSplit(layout, 0.9, 0);
+ row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "object", 0, NULL, 0);
uiItemR(row, ptr, "time", 0, NULL, 0);
+ uiItemR(split,ptr,"unique_names",UI_ITEM_R_TOGGLE,NULL,0);

split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
Index: source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- source/blender/makesdna/DNA_actuator_types.h (revision 32619)
+++ source/blender/makesdna/DNA_actuator_types.h (working copy)
@@ -92,6 +92,7 @@
float mass;
short localflag; /* flag for the lin & ang. vel: apply locally */
short dyn_operation;
+
} bEditObjectActuator;

typedef struct bSceneActuator {
@@ -391,6 +392,7 @@
/* editObjectActuator->localflag */
#define ACT_EDOB_LOCAL_LINV 2
#define ACT_EDOB_LOCAL_ANGV 4
+#define ACT_EDOB_UNIQUENAME 8

/* editObjectActuator->flag */
#define ACT_TRACK_3D 1
Index: source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- source/blender/makesrna/intern/rna_actuator.c (revision 32619)
+++ source/blender/makesrna/intern/rna_actuator.c (working copy)
@@ -1248,7 +1248,7 @@
RNA_def_property_update(prop, NC_LOGIC, NULL);

prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_struct_type(prop, "Object");
RNA_def_property_pointer_sdna(prop, NULL, "ob");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Add this Object and all its children (cant be on an visible layer)");
@@ -1280,6 +1280,12 @@
RNA_def_property_ui_text(prop, "Mass", "The mass of the object");
RNA_def_property_update(prop, NC_LOGIC, NULL);

+ /* Boolean */
+ prop= RNA_def_property(srna, "unique_names", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "localflag",ACT_EDOB_UNIQUENAME);
+ RNA_def_property_ui_text(prop, "U", "Make Unique Names for object copies");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
/* floats 3 Arrays*/
prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "linVelocity");
Index: source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- source/gameengine/Converter/KX_ConvertActuators.cpp (revision 32619)
+++ source/gameengine/Converter/KX_ConvertActuators.cpp (working copy)
@@ -469,10 +469,12 @@
editobact->linVelocity,
(editobact->localflag & ACT_EDOB_LOCAL_LINV)!=0,
editobact->angVelocity,
- (editobact->localflag & ACT_EDOB_LOCAL_ANGV)!=0
+ (editobact->localflag & ACT_EDOB_LOCAL_ANGV)!=0,
+ (editobact->localflag & ACT_EDOB_UNIQUENAME)!=0
);

//editobact->ob to gameobj
+ printf("%d",editobact->localflag);
baseact = tmpaddact;
}
break;
Index: source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
===================================================================
--- source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp (revision 32619)
+++ source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp (working copy)
@@ -51,14 +51,17 @@
const float *linvel,
bool linv_local,
const float *angvel,
- bool angv_local)
+ bool angv_local,
+ bool u_name)
:
SCA_IActuator(gameobj, KX_ACT_ADD_OBJECT),
m_OriginalObject(original),
m_scene(scene),

m_localLinvFlag(linv_local),
- m_localAngvFlag(angv_local)
+ m_localAngvFlag(angv_local),
+ m_uniqueName(u_name)
+
{
m_linear_velocity[0] = linvel[0];
m_linear_velocity[1] = linvel[1];
@@ -66,12 +69,15 @@
m_angular_velocity[0] = angvel[0];
m_angular_velocity[1] = angvel[1];
m_angular_velocity[2] = angvel[2];
+

if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);

m_lastCreatedObject = NULL;
m_timeProp = time;
+ m_cont = 0;
+
}


@@ -194,6 +200,7 @@
};

PyAttributeDef KX_SCA_AddObjectActuator::Attributes[] = {
+ KX_PYATTRIBUTE_BOOL_RW("uniqueName",KX_SCA_AddObjectActuator,m_uniqueName),
KX_PYATTRIBUTE_RW_FUNCTION("object",KX_SCA_AddObjectActuator,pyattr_get_object,pyattr_set_object),
KX_PYATTRIBUTE_RO_FUNCTION("objectLastCreated",KX_SCA_AddObjectActuator,pyattr_get_objectLastCreated),
KX_PYATTRIBUTE_INT_RW("time",0,2000,true,KX_SCA_AddObjectActuator,m_timeProp),
@@ -250,8 +257,12 @@

void KX_SCA_AddObjectActuator::InstantAddObject()
{
+ char m_name [50];
+ if(m_uniqueName){m_cont +=1;}
+
if (m_OriginalObject)
{
+
// Add an identical object, with properties inherited from the original object
// Now it needs to be added to the current scene.
SCA_IObject* replica = m_scene->AddReplicaObject(m_OriginalObject,GetParent(),m_timeProp );
@@ -259,7 +270,14 @@
game_obj->setLinearVelocity(m_linear_velocity ,m_localLinvFlag);
game_obj->setAngularVelocity(m_angular_velocity,m_localAngvFlag);
game_obj->ResolveCombinedVelocities(m_linear_velocity, m_angular_velocity, m_localLinvFlag, m_localAngvFlag);
-
+
+ if(m_uniqueName)
+ {
+ // Store the orginal name and the count value in a String
+ sprintf(m_name,"%s.%03d",(const char *)(game_obj->GetName()), m_cont);
+ game_obj->SetName(m_name); // assign de new name
+ }
+
// keep a copy of the last object, to allow python scripters to change it
if (m_lastCreatedObject)
{
Index: source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
===================================================================
--- source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h (revision 32619)
+++ source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h (working copy)
@@ -54,6 +54,10 @@
/// Time field: lifetime of the new object
int m_timeProp;

+ // Object Counter and UniqueName feature ON/OFF
+ int m_cont;
+ bool m_uniqueName;
+
/// Original object reference (object to replicate)
SCA_IObject* m_OriginalObject;

@@ -69,10 +73,7 @@
float m_angular_velocity[3];
/// Apply the velocity locally
bool m_localAngvFlag;
-
-
-
-
+
SCA_IObject* m_lastCreatedObject;

public:
@@ -90,7 +91,8 @@
const float *linvel,
bool linv_local,
const float *angvel,
- bool angv_local
+ bool angv_local,
+ bool u_name
);

~KX_SCA_AddObjectActuator(void);
  1. Index: source/blender/editors/space_logic/logic_window.c
  2. ===================================================================
  3. --- source/blender/editors/space_logic/logic_window.c   (revision 32619)
  4. +++ source/blender/editors/space_logic/logic_window.c   (working copy)
  5. @@ -3867,9 +3867,11 @@
  6.         switch (RNA_enum_get(ptr, "mode"))
  7.         {
  8.                 case ACT_EDOB_ADD_OBJECT:
  9. -                       row = uiLayoutRow(layout, 0);
  10. +                       split = uiLayoutSplit(layout, 0.9, 0);
  11. +                       row = uiLayoutRow(split, 0);
  12.                         uiItemR(row, ptr, "object", 0, NULL, 0);
  13.                         uiItemR(row, ptr, "time", 0, NULL, 0);
  14. +                       uiItemR(split,ptr,"unique_names",UI_ITEM_R_TOGGLE,NULL,0);
  15.  
  16.                         split = uiLayoutSplit(layout, 0.9, 0);
  17.                         row = uiLayoutRow(split, 0);
  18. Index: source/blender/makesdna/DNA_actuator_types.h
  19. ===================================================================
  20. --- source/blender/makesdna/DNA_actuator_types.h        (revision 32619)
  21. +++ source/blender/makesdna/DNA_actuator_types.h        (working copy)
  22. @@ -92,6 +92,7 @@
  23.         float mass;
  24.         short localflag; /* flag for the lin & ang. vel: apply locally   */
  25.         short dyn_operation;
  26. +       
  27.  } bEditObjectActuator;
  28.  
  29.  typedef struct bSceneActuator {
  30. @@ -391,6 +392,7 @@
  31.  /* editObjectActuator->localflag */
  32.  #define ACT_EDOB_LOCAL_LINV            2
  33.  #define ACT_EDOB_LOCAL_ANGV            4
  34. +#define ACT_EDOB_UNIQUENAME            8
  35.  
  36.  /* editObjectActuator->flag */
  37.  #define ACT_TRACK_3D                   1
  38. Index: source/blender/makesrna/intern/rna_actuator.c
  39. ===================================================================
  40. --- source/blender/makesrna/intern/rna_actuator.c       (revision 32619)
  41. +++ source/blender/makesrna/intern/rna_actuator.c       (working copy)
  42. @@ -1248,7 +1248,7 @@
  43.         RNA_def_property_update(prop, NC_LOGIC, NULL);
  44.  
  45.         prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
  46. -       RNA_def_property_struct_type(prop, "Object");
  47. +       RNA_def_property_struct_type(prop, "Object");
  48.         RNA_def_property_pointer_sdna(prop, NULL, "ob");
  49.         RNA_def_property_flag(prop, PROP_EDITABLE);
  50.         RNA_def_property_ui_text(prop, "Object", "Add this Object and all its children (cant be on an visible layer)");
  51. @@ -1280,6 +1280,12 @@
  52.         RNA_def_property_ui_text(prop, "Mass", "The mass of the object");
  53.         RNA_def_property_update(prop, NC_LOGIC, NULL);
  54.  
  55. +       /* Boolean */
  56. +       prop= RNA_def_property(srna, "unique_names", PROP_BOOLEAN, PROP_NONE);
  57. +       RNA_def_property_boolean_sdna(prop, NULL, "localflag",ACT_EDOB_UNIQUENAME);
  58. +       RNA_def_property_ui_text(prop, "U", "Make Unique Names for object copies");
  59. +       RNA_def_property_update(prop, NC_LOGIC, NULL);
  60. +
  61.         /* floats 3 Arrays*/
  62.         prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_XYZ);
  63.         RNA_def_property_float_sdna(prop, NULL, "linVelocity");
  64. Index: source/gameengine/Converter/KX_ConvertActuators.cpp
  65. ===================================================================
  66. --- source/gameengine/Converter/KX_ConvertActuators.cpp (revision 32619)
  67. +++ source/gameengine/Converter/KX_ConvertActuators.cpp (working copy)
  68. @@ -469,10 +469,12 @@
  69.                                                                 editobact->linVelocity,
  70.                                                                 (editobact->localflag & ACT_EDOB_LOCAL_LINV)!=0,
  71.                                                                 editobact->angVelocity,
  72. -                                                               (editobact->localflag & ACT_EDOB_LOCAL_ANGV)!=0
  73. +                                                               (editobact->localflag & ACT_EDOB_LOCAL_ANGV)!=0,
  74. +                                                               (editobact->localflag & ACT_EDOB_UNIQUENAME)!=0
  75.                                                                 );
  76.                                                                
  77.                                                                 //editobact->ob to gameobj
  78. +                                                               printf("%d",editobact->localflag);
  79.                                                                 baseact = tmpaddact;
  80.                                         }
  81.                                         break;
  82. Index: source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
  83. ===================================================================
  84. --- source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp       (revision 32619)
  85. +++ source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp       (working copy)
  86. @@ -51,14 +51,17 @@
  87.                                                                                                    const float *linvel,
  88.                                                                                                    bool linv_local,
  89.                                                                                                    const float *angvel,
  90. -                                                                                                  bool angv_local)
  91. +                                                                                                  bool angv_local,
  92. +                                                                                                  bool u_name)
  93.         :
  94.         SCA_IActuator(gameobj, KX_ACT_ADD_OBJECT),
  95.         m_OriginalObject(original),
  96.         m_scene(scene),
  97.         
  98.         m_localLinvFlag(linv_local),
  99. -       m_localAngvFlag(angv_local)
  100. +       m_localAngvFlag(angv_local),
  101. +       m_uniqueName(u_name)
  102. +       
  103.  {
  104.         m_linear_velocity[0] = linvel[0];
  105.         m_linear_velocity[1] = linvel[1];
  106. @@ -66,12 +69,15 @@
  107.         m_angular_velocity[0] = angvel[0];
  108.         m_angular_velocity[1] = angvel[1];
  109.         m_angular_velocity[2] = angvel[2];
  110. +       
  111.  
  112.         if (m_OriginalObject)
  113.                 m_OriginalObject->RegisterActuator(this);
  114.  
  115.         m_lastCreatedObject = NULL;
  116.         m_timeProp = time;
  117. +       m_cont = 0;
  118. +       
  119.  }
  120.  
  121.  
  122. @@ -194,6 +200,7 @@
  123.  };
  124.  
  125.  PyAttributeDef KX_SCA_AddObjectActuator::Attributes[] = {
  126. +       KX_PYATTRIBUTE_BOOL_RW("uniqueName",KX_SCA_AddObjectActuator,m_uniqueName),
  127.         KX_PYATTRIBUTE_RW_FUNCTION("object",KX_SCA_AddObjectActuator,pyattr_get_object,pyattr_set_object),
  128.         KX_PYATTRIBUTE_RO_FUNCTION("objectLastCreated",KX_SCA_AddObjectActuator,pyattr_get_objectLastCreated),
  129.         KX_PYATTRIBUTE_INT_RW("time",0,2000,true,KX_SCA_AddObjectActuator,m_timeProp),
  130. @@ -250,8 +257,12 @@
  131.  
  132.  void   KX_SCA_AddObjectActuator::InstantAddObject()
  133.  {
  134. +       char m_name [50];
  135. +       if(m_uniqueName){m_cont +=1;}
  136. +       
  137.         if (m_OriginalObject)
  138.         {
  139. +              
  140.                 // Add an identical object, with properties inherited from the original object 
  141.                 // Now it needs to be added to the current scene.
  142.                 SCA_IObject* replica = m_scene->AddReplicaObject(m_OriginalObject,GetParent(),m_timeProp );
  143. @@ -259,7 +270,14 @@
  144.                 game_obj->setLinearVelocity(m_linear_velocity ,m_localLinvFlag);
  145.                 game_obj->setAngularVelocity(m_angular_velocity,m_localAngvFlag);
  146.                 game_obj->ResolveCombinedVelocities(m_linear_velocity, m_angular_velocity, m_localLinvFlag, m_localAngvFlag);
  147. -
  148. +              
  149. +               if(m_uniqueName)
  150. +               {
  151. +                       // Store the orginal name and the count value in a String
  152. +                       sprintf(m_name,"%s.%03d",(const char *)(game_obj->GetName()), m_cont);
  153. +                       game_obj->SetName(m_name); // assign de new name
  154. +               }
  155. +              
  156.                 // keep a copy of the last object, to allow python scripters to change it
  157.                 if (m_lastCreatedObject)
  158.                 {
  159. Index: source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
  160. ===================================================================
  161. --- source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h (revision 32619)
  162. +++ source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h (working copy)
  163. @@ -54,6 +54,10 @@
  164.         /// Time field: lifetime of the new object
  165.         int     m_timeProp;
  166.  
  167. +       // Object Counter and UniqueName feature ON/OFF
  168. +       int m_cont;
  169. +       bool m_uniqueName;
  170. +
  171.         /// Original object reference (object to replicate)     
  172.         SCA_IObject*    m_OriginalObject;
  173.  
  174. @@ -69,10 +73,7 @@
  175.         float  m_angular_velocity[3];
  176.         /// Apply the velocity locally
  177.         bool m_localAngvFlag;
  178. -       
  179. -       
  180. -       
  181. -       
  182. +              
  183.         SCA_IObject*    m_lastCreatedObject;
  184.         
  185.  public:
  186. @@ -90,7 +91,8 @@
  187.                 const float *linvel,
  188.                 bool linv_local,
  189.                 const float *angvel,
  190. -               bool angv_local
  191. +               bool angv_local,
  192. +               bool u_name
  193.         );
  194.  
  195.         ~KX_SCA_AddObjectActuator(void);
  196.  
go to heaven