*/}}
浏览代码

Socket undo refresh correct

Yiming Wu 2 年之前
父节点
当前提交
b320ba425a
共有 4 个文件被更改,包括 11 次插入5 次删除
  1. 1 1
      source/lagui/la_data.c
  2. 4 2
      source/lagui/la_interface.h
  3. 2 1
      source/lagui/la_kernel.c
  4. 4 1
      source/lagui/resources/la_properties.c

+ 1 - 1
source/lagui/la_data.c

@@ -1871,8 +1871,8 @@ void laSetActiveInstance(laProp *sub, void *FromInstance, void *Instance){
         }
         if (sub->OffsetIsPointer && sub->Offset>=0){
             void **a = (void **)((BYTE *)FromInstance + sub->Offset);
-            memAssignRefSafe(sub->Container->Hyper?sp:0,FromInstance, a, Instance);
             laNotifySubPropUsers(sp, FromInstance);
+            memAssignRefSafe(sub->Container->Hyper?sp:0,FromInstance, a, Instance);
         }
     }
     return;

+ 4 - 2
source/lagui/la_interface.h

@@ -607,6 +607,8 @@ STRUCTURE(laSocketRecord){
 
 extern laPropContainer* LA_PC_SOCKET_IN;
 extern laPropContainer* LA_PC_SOCKET_OUT;
+extern laPropContainer* LA_PROP_SOCKET_SOURCE;
+extern laPropContainer* LA_PROP_SOCKET_OUT;
 extern laProp* LA_PROP_CONTROLLER;
 
 #define LA_UI_NORMAL  0
@@ -1218,8 +1220,8 @@ int la_RunDrivers();
 laBaseNode* la_CreateDriverNode(laNodeRack* ir, laBaseNodeType* NodeType);
 laBaseNode* la_CreateInputMapperNode(laNodeRack* ir, laBaseNodeType* NodeType);
 
-#define LA_NODE_TYPE_INPUT 0
-#define LA_NODE_TYPE_DRIVER 1
+#define LA_NODE_CATEGORY_INPUT (1<<0)
+#define LA_NODE_CATEGORY_DRIVER (1<<1)
 
 laPropContainer* laget_BaseNodeType(laBaseNode* bn);
 void laRegisterNode(laBaseNodeType* type, laPropContainer* pc, laBaseNodeInitF init, laBaseNodeDestroyF destroy, laBaseNodeVisitF visit, laBaseNodeEvalF eval, int nodesize, char* udf_string);

+ 2 - 1
source/lagui/la_kernel.c

@@ -4073,6 +4073,7 @@ void la_RecordSocketRuntimePosition(laUiItem* ui){
         laNodeOutSocket* s=ui->PP.EndInstance; s->RuntimeX=(sl+sr)/2; s->RuntimeY=(su+sb)/2;
     }else{
         laNodeInSocket* s=ui->PP.EndInstance;  s->RuntimeX=(sl+sr)/2; s->RuntimeY=(su+sb)/2;
+        laUseDataBlock(s, LA_PROP_SOCKET_SOURCE, MAIN.PropMatcherContextP->FrameDistinguish, MAIN.PropMatcherContextP, la_PropPanelUserRemover, 0);
     }
 }
 laUiList* la_GiveExistingPage(laListHandle* from, void* instance){
@@ -4437,7 +4438,7 @@ int la_UpdateUiListRecursive(laUiList *uil, int U, int L, int R, int B, int Fast
 
         if (!WaitAnimation){ ui->L = ui->TL; ui->R = ui->TR; ui->U = ui->TU; ui->B = ui->TB; }
 
-        if(ui->Type==_LA_UI_NODE_SOCKET){ la_RecordSocketRuntimePosition(ui); }
+        if(ui->Type==_LA_UI_NODE_SOCKET){  la_RecordSocketRuntimePosition(ui); }
 
         ui = ui->Item.pNext;
     }

+ 4 - 1
source/lagui/resources/la_properties.c

@@ -743,6 +743,8 @@ laPropContainer* tnsget_ObjectType(tnsObject* o){
 
 laPropContainer* LA_PC_SOCKET_IN;
 laPropContainer* LA_PC_SOCKET_OUT;
+laPropContainer* LA_PROP_SOCKET_SOURCE;
+laPropContainer* LA_PROP_SOCKET_OUT;
 laPropContainer* TNS_PC_OBJECT_GENERIC;
 laPropContainer* TNS_PC_OBJECT_CAMERA;
 laPropContainer* TNS_PC_OBJECT_LIGHT;
@@ -1194,7 +1196,8 @@ void la_RegisterInternalProps(){
         } LA_PC_SOCKET_OUT = p;
         p = laAddPropertyContainer("la_in_socket", "Input Socket", "Input socket for nodest", 0, 0, sizeof(laNodeInSocket), 0, 0, 1);{
             laAddStringProperty(p, "label", "Label", "Socket's label", 0, 0, 0, 0, 1, offsetof(laNodeInSocket, Label), 0, 0, 0, 0, LA_AS_IDENTIFIER);
-            laAddSubGroup(p, "source", "Source", "Source socket", "la_out_socket",0, 0, offsetof(laNodeInSocket, Source), 0, 0, 0, 0, 0, 0, 0, 0, LA_UDF_REFER);
+            sp=laAddSubGroup(p, "source", "Source", "Source socket", "la_out_socket",0, 0, offsetof(laNodeInSocket, Source), 0, 0, 0, 0, 0, 0, 0, 0, LA_UDF_REFER);
+            LA_PROP_SOCKET_SOURCE=sp;
             laAddIntProperty(p, "data_type", "Data type", "User defined data type", 0, 0, 0, 0, 0, 0, 0, 0, offsetof(laNodeInSocket, DataType), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,LA_READ_ONLY);
             laAddIntProperty(p, "color_id", "Color ID", "Color ID of the source wire", 0, 0, 0, 0, 0, 0, 0, 0, offsetof(laNodeInSocket, ColorId), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0);
             laAddIntProperty(p, "array_length", "Array Length", "Array length of data", 0, 0, 0, 0, 0, 0, 0, 0, offsetof(laNodeInSocket, ArrLen), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,LA_READ_ONLY);