*/}}
Browse Source

rack etc fixes.

YimingWu 1 year ago
parent
commit
4cb5865d58
4 changed files with 15 additions and 11 deletions
  1. 8 1
      la_interface.h
  2. 1 1
      la_kernel.c
  3. 4 8
      resources/la_nodes_basic.c
  4. 2 1
      resources/la_templates.c

+ 8 - 1
la_interface.h

@@ -1408,6 +1408,10 @@ void latouched_NodeInSocket(void* unused, int hint);
 #define LA_ADD_THIS_NODE(n,vi) \
     {uint64_t br=vi->Branch; if(!n->Base.Branch){ lstAppendPointer(vi->l,n); } n->Base.Branch|=br; n->Base.BranchTemp&=(~br); }
 
+#define LA_GET_SRC_AS_VALUE(var, socket) \
+    {if(socket->Source&&socket->Source->DataType&LA_PROP_FLOAT) var=*((real*)socket->Source->Data);\
+    if(socket->Source&&socket->Source->DataType&(LA_PROP_INT|LA_PROP_ENUM)) var=*((int*)socket->Source->Data);}
+
 #define LA_IDN_OLD_DUPL(socket) \
     old->socket->Duplicated=new->socket;
 #define LA_IDN_NEW_LINK(socket) \
@@ -1487,7 +1491,7 @@ STRUCTURE(laRackPage){
 };
 #define LA_RACK_TYPE_INPUT (1<<0)
 #define LA_RACK_TYPE_DRIVER (1<<1)
-#define LA_RACK_TYPE_ALL (LA_RACK_TYPE_DRIVER|LA_RACK_TYPE_INPUT)
+#define LA_RACK_TYPE_ALL 0xfffffff
 STRUCTURE(laNodeRack){
     laListItem Item;
     laSafeString* Name;
@@ -1748,6 +1752,9 @@ laPanel *la_FindFreePanelByTemplate(laWindow *w, const laUiTemplate *uit);
 laUiItem *la_FindUiWithMark(laUiList *uil, char *mark);
 laUiList *la_FindSubListWithInstance(laUiItem *ui, void *Instance);
 
+void* laget_CurrentRackPage(laRackPageCollection* c);
+void laset_CurrentRackPage(laRackPageCollection* c,laRackPage* rp);
+
 #define LA_FILETYPE_UNKNOWN 0
 #define LA_FILETYPE_UDF 1
 #define LA_FILETYPE_DOCUMENT 2

+ 1 - 1
la_kernel.c

@@ -7182,7 +7182,7 @@ void laMainLoop(){
 
         la_UpdateControllerStatus();
 
-        if(MAIN.GraphNeedsRebuild){ la_RebuildInputMapping(); MAIN.InputNeedsEval = 0; }
+        if(MAIN.GraphNeedsRebuild){ la_RebuildInputMapping(); MAIN.GraphNeedsRebuild = 0; }
         if(MAIN.InputNeedsEval){ la_RunInputMapping(); }
 
         for (w=MAIN.Windows.pFirst;w;w = NextW){

+ 4 - 8
resources/la_nodes_basic.c

@@ -893,14 +893,11 @@ int IDN_LoopVisit(laLoopNode* n, laNodeVisitInfo* vi){
     LA_ADD_THIS_NODE(n,vi);
     return LA_DAG_FLAG_PERM;
 }
-#define LA_GET_SRC_AS_INT(var, socket) \
-    {if(socket->Source->DataType&LA_PROP_FLOAT) var=*((real*)socket->Source->Data);\
-    if(socket->Source->DataType&(LA_PROP_INT|LA_PROP_ENUM)) var=*((int*)socket->Source->Data);}
 int IDN_LoopEval(laLoopNode* n){
     laLoopIndexNode* lin=LA_SRC_AND_PARENT(n->InIndex)?n->InIndex->Source->Parent:0;
     if(lin->Base.Type!=&LA_IDN_LOOP_INDEX){lin=0;}
     int Iterations=n->Iterations;
-    if(LA_SRC_AND_PARENT(n->InIterations)){ LA_GET_SRC_AS_INT(Iterations, n->InIterations); }
+    if(LA_SRC_AND_PARENT(n->InIterations)){ LA_GET_SRC_AS_VALUE(Iterations, n->InIterations); }
     for(int i=0; i<Iterations; i++){
         if(lin){ lin->Iteration=i; }
         la_PageClearBranch(n->Page,n->BranchControl);
@@ -1035,10 +1032,9 @@ int OPINV_AddNode(laOperator* a, laEvent *e){
     if(!MAIN.CurrentNodeCategory) MAIN.CurrentNodeCategory=MAIN.NodeCategories.pFirst;
 
     char* target=strGetArgumentString(a->ExtraInstructionsP,"target");
-    if(!target || strSame(target,"INPUT")){ MAIN.FilterNodeCategory=LA_RACK_TYPE_INPUT;
-        if(!(MAIN.CurrentNodeCategory->For&LA_RACK_TYPE_INPUT)) MAIN.CurrentNodeCategory=LA_NODE_CATEGORY_INPUT; }
-    else{ MAIN.FilterNodeCategory=LA_RACK_TYPE_DRIVER;
-        if(!(MAIN.CurrentNodeCategory->For&LA_RACK_TYPE_DRIVER)) MAIN.CurrentNodeCategory=LA_NODE_CATEGORY_DRIVER; }
+    int ti=0; if(target) sscanf(target,"%d",&ti);
+    if((!target) || ti==0){ MAIN.FilterNodeCategory=LA_RACK_TYPE_INPUT; }
+    else{ MAIN.FilterNodeCategory=ti; }
     char* type=strGetArgumentString(a->ExtraInstructionsP,"type");
     if(!type){ laEnableOperatorPanel(a,a->This,e->x-LA_RH*4,e->y-LA_RH,200,200,0,0,LA_RH*15,0,0,0,0,0,e); return LA_RUNNING; }
     else{

+ 2 - 1
resources/la_templates.c

@@ -1126,7 +1126,8 @@ void laui_NodeRack(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn
     laShowItem(uil,c,This,"nodes")->Flags|=LA_UI_FLAGS_NO_DECAL;
     laShowLabel(uil,c,"\n",0,0);
     b=laBeginRow(uil,c,0,0);
-    laShowItemFull(uil,c,This,"add_node",0,(context==LA_RACK_TYPE_DRIVER)?"target=DRIVER;":"target=INPUT;",0,0)->Expand=1;
+    char args[64]=""; if(context) sprintf(args,"target=%d;",context);
+    laShowItemFull(uil,c,This,"add_node",0,args,0,0)->Expand=1;
     laShowItem(uil,c,This,"delete")->Flags|=LA_UI_FLAGS_ICON;
     laShowItem(uil,c,This,"insert_rack");
     laEndRow(uil,b);