|  | @@ -131,7 +131,6 @@ void la_RootObjectDraw(laBoxedTheme *bt, tnsObject *root, laUiItem* ui){
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      }else if(e->OffScrShadow){ tnsDelete2DOffscreen(e->OffScrShadow); }
 |  |      }else if(e->OffScrShadow){ tnsDelete2DOffscreen(e->OffScrShadow); }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |      //{
 |  |      //{
 | 
											
												
													
														|  |      //    tnsDrawToOffscreen(e->OffScr, 1, 0);
 |  |      //    tnsDrawToOffscreen(e->OffScr, 1, 0);
 | 
											
												
													
														|  |      //    //tnsUseShader(T->TEST_MatcapShader);
 |  |      //    //tnsUseShader(T->TEST_MatcapShader);
 | 
											
										
											
												
													
														|  | @@ -155,19 +154,20 @@ void la_RootObjectDraw(laBoxedTheme *bt, tnsObject *root, laUiItem* ui){
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      if(root){
 |  |      if(root){
 | 
											
												
													
														|  |          tnsSetObjectTreeEvaluationArgs(root,root->Active,1,1);
 |  |          tnsSetObjectTreeEvaluationArgs(root,root->Active,1,1);
 | 
											
												
													
														|  | -        tnsEvaluateObjectTree(root);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        tnsEvaluateObjectTree(root, 0);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND);
 |  |          glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        tnsUseShader(T->immShader); tnsEnableShaderv(T->immShader);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        tnsUseShader(T->immShader); tnsEnableShaderv(T->immShader); tnsUseNoTexture();
 | 
											
												
													
														|  |          tnsUnbindTexture(); tnsUniformUseTexture(T->immShader,0,0); tnsUseMultiplyColor(0);
 |  |          tnsUnbindTexture(); tnsUniformUseTexture(T->immShader,0,0); tnsUseMultiplyColor(0);
 | 
											
												
													
														|  |          tnsDrawObjectTree(root,TNS_EVAL_LAYER_SOLID,0);
 |  |          tnsDrawObjectTree(root,TNS_EVAL_LAYER_SOLID,0);
 | 
											
												
													
														|  |          
 |  |          
 | 
											
												
													
														|  |          glLineWidth(3); 
 |  |          glLineWidth(3); 
 | 
											
												
													
														|  | -        glEnable(GL_POLYGON_OFFSET_LINE); glPolygonOffset(-1,-1);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        tnsUniformUseOffset(T->immShader,1);
 | 
											
												
													
														|  |          glDepthMask(GL_FALSE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 |  |          glDepthMask(GL_FALSE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 | 
											
												
													
														|  |          tnsDrawObjectTree(root,TNS_EVAL_LAYER_OUTLINE,0);
 |  |          tnsDrawObjectTree(root,TNS_EVAL_LAYER_OUTLINE,0);
 | 
											
												
													
														|  |          glDepthMask(GL_TRUE); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 |  |          glDepthMask(GL_TRUE); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 | 
											
												
													
														|  | 
 |  | +        tnsUniformUseOffset(T->immShader,0);
 | 
											
												
													
														|  |          glLineWidth(1);
 |  |          glLineWidth(1);
 | 
											
												
													
														|  |          glDisable(GL_POLYGON_OFFSET_LINE);
 |  |          glDisable(GL_POLYGON_OFFSET_LINE);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -470,98 +470,107 @@ void la_CanvasDrawOverlay(laUiItem *ui, int h){
 | 
											
												
													
														|  |  int la_AnimateUiListRecursive(laUiList *uil);
 |  |  int la_AnimateUiListRecursive(laUiList *uil);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  void laDefault3DViewOverlay(laUiItem *ui){
 |  |  void laDefault3DViewOverlay(laUiItem *ui){
 | 
											
												
													
														|  | -    laUiList *uil, *gu;
 |  | 
 | 
											
												
													
														|  | -    laColumn *c, *cl, *cll, *clr, *cr, *crl, *crr, *gc, *gcl, *gcr;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    laUiList *uil, *gu,*muil,*gu2;
 | 
											
												
													
														|  | 
 |  | +    laColumn *c, *cl, *cr,  *gc, *gcl, *gcr, *mc,*gc2;
 | 
											
												
													
														|  |      laPropPack *e = &ui->ExtraPP;
 |  |      laPropPack *e = &ui->ExtraPP;
 | 
											
												
													
														|  | -    laUiItem *b, *g, *b1;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    laUiItem *b, *g, *b1, *b2,*g2;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      if (!(uil = ui->Subs.pFirst)) uil = laAddTabPage(ui, "New Group");
 |  |      if (!(uil = ui->Subs.pFirst)) uil = laAddTabPage(ui, "New Group");
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      c = laFirstColumn(uil);
 |  |      c = laFirstColumn(uil);
 | 
											
												
													
														|  | -    laSplitColumn(uil, c, 0.8);
 |  | 
 | 
											
												
													
														|  | -    cl = laLeftColumn(c, 0);
 |  | 
 | 
											
												
													
														|  | -    cr = laRightColumn(c, 0);
 |  | 
 | 
											
												
													
														|  | -    laSplitColumn(uil, cl, 0.25);
 |  | 
 | 
											
												
													
														|  | -    cll = laLeftColumn(cl, 0);
 |  | 
 | 
											
												
													
														|  | -    clr = laRightColumn(cl, 0);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    laSplitColumn(uil, c, 0.8); cl = laLeftColumn(c, 0); cr = laRightColumn(c, 0);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    laShowColumnAdjuster(uil, c);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    b=laBeginRow(uil,c,0,0);
 | 
											
												
													
														|  | 
 |  | +    laUiItem* activeui=laShowInvisibleItem(uil,c,&ui->PP,"active");
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    g = laMakeFoldableGroup(uil, cll, "Tools", 0, 1, 0);{
 |  | 
 | 
											
												
													
														|  | -        gu = g->Page; gc = laFirstColumn(gu);
 |  | 
 | 
											
												
													
														|  | -        laSplitColumn(gu, gc, 0.35); gcl = laLeftColumn(gc, 0); gcr = laRightColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_delete");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_make_parent");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_unparent");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_add");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_grab");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_scale");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_rotate");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_clear_transformations");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_extrude");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_make");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_knife");
 |  | 
 | 
											
												
													
														|  | -        laShowItemFull(gu,gc,&ui->ExtraPP,"_this_M_knife",0,"mode=loop_cut;text=Loop Cut",0,0);
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_merge");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_subdiv");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_separate");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_combine");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_duplicate");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu,gc,&ui->ExtraPP,"_this_M_recalculate_normals");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    muil=laMakeMenuPage(uil,c,"👁"); mc=laFirstColumn(muil);{
 | 
											
												
													
														|  | 
 |  | +        laSplitColumn(muil, mc, 0.3); gcl = laLeftColumn(mc, 0); gcr = laRightColumn(mc, 0);
 | 
											
												
													
														|  | 
 |  | +        laShowLabel(muil,gcl,"Floor:",0,0); laShowLabel(muil,gcr,"Axis:",0,0);
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,gcl,&ui->ExtraPP,"show_floor_grid")->Flags|=LA_UI_FLAGS_ICON|LA_UI_FLAGS_CYCLE;
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,gcr,&ui->ExtraPP,"show_axis")->Flags|=LA_UI_FLAGS_TRANSPOSE|LA_UI_FLAGS_ICON;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    g = laMakeFoldableGroup(uil, cr, "Scene Info", 0, 1, 0);{
 |  | 
 | 
											
												
													
														|  | -        gu = g->Page;
 |  | 
 | 
											
												
													
														|  | -        gc = laFirstColumn(gu);
 |  | 
 | 
											
												
													
														|  | -        laSplitColumn(gu, gc, 0.35);
 |  | 
 | 
											
												
													
														|  | -        gcl = laLeftColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  | -        gcr = laRightColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  | -        laShowItemFull(gu, gc, &ui->PP, 0, LA_WIDGET_COLLECTION_SELECTOR,0,laui_IdentifierOnly,0);
 |  | 
 | 
											
												
													
														|  | -        laShowLabel(gu, gcl, "Rename:", 0, 0);
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu, gcr, &ui->PP, "name");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    muil=laMakeMenuPage(uil,c,"Transform"); mc=laFirstColumn(muil);{
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_grab");
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_scale");
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_rotate");
 | 
											
												
													
														|  | 
 |  | +        laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_clear_transformations");
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    g = laMakeFoldableGroup(uil, cr, "Object Info", 0, 0, 0);{
 |  | 
 | 
											
												
													
														|  | -        gu = g->Page;
 |  | 
 | 
											
												
													
														|  | -        gc = laFirstColumn(gu);
 |  | 
 | 
											
												
													
														|  | -        laSplitColumn(gu, gc, 0.5);
 |  | 
 | 
											
												
													
														|  | -        gcl = laLeftColumn(gc, 6);
 |  | 
 | 
											
												
													
														|  | -        gcr = laRightColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        b1=laOnConditionThat(gu,gc,laPropExpression(&ui->PP,"active"));{
 |  | 
 | 
											
												
													
														|  | -            laShowItem(gu, gc, &ui->PP, "active.name");
 |  | 
 | 
											
												
													
														|  | -            b=laOnConditionThat(gu,gc,laPropExpression(&ui->ExtraPP, "delta_mode"));{
 |  | 
 | 
											
												
													
														|  | -                laShowLabel(gu, gcl, "DLoc:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.dlocation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 |  | 
 | 
											
												
													
														|  | -                laShowSeparator(gu,gc);
 |  | 
 | 
											
												
													
														|  | -                laShowLabel(gu, gcl, "DRot:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.drotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 |  | 
 | 
											
												
													
														|  | -                laShowItem(gu, gc, &ui->PP, "active.dscale");
 |  | 
 | 
											
												
													
														|  | -            }laElse(gu,b);{
 |  | 
 | 
											
												
													
														|  | -                laShowLabel(gu, gcl, "Loc:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.location")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 |  | 
 | 
											
												
													
														|  | -                laShowSeparator(gu,gc);
 |  | 
 | 
											
												
													
														|  | -                laShowLabel(gu, gcl, "Rot:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.rotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 |  | 
 | 
											
												
													
														|  | -                laShowItem(gu, gc, &ui->PP, "active.scale");
 |  | 
 | 
											
												
													
														|  | -            }laEndCondition(gu,b);
 |  | 
 | 
											
												
													
														|  | -        }laElse(gu,b1);{
 |  | 
 | 
											
												
													
														|  | -            laShowLabel(gu, gc, "No active object.", 0, 0);
 |  | 
 | 
											
												
													
														|  | -        }laEndCondition(gu,b1);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    muil=laMakeMenuPage(uil,c,"Object"); mc=laFirstColumn(muil);{
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_add");
 | 
											
												
													
														|  | 
 |  | +        laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_make_parent");
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_unparent");
 | 
											
												
													
														|  | 
 |  | +        laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_duplicate");
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_combine");
 | 
											
												
													
														|  | 
 |  | +        laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +        laShowItem(muil,mc,&ui->ExtraPP,"_this_M_delete");
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    g = laMakeFoldableGroup(uil, cr, "Display", 0, 1, 0);{
 |  | 
 | 
											
												
													
														|  | -        gu = g->Page;
 |  | 
 | 
											
												
													
														|  | -        gc = laFirstColumn(gu);
 |  | 
 | 
											
												
													
														|  | -        laSplitColumn(gu, gc, 0.35);
 |  | 
 | 
											
												
													
														|  | -        gcl = laLeftColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  | -        gcr = laRightColumn(gc, 0);
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        laShowLabel(gu, gcl, "Axis:", 0, 0);
 |  | 
 | 
											
												
													
														|  | -        laWidget w={_LA_UI_ENUM_SELECTOR, LA_UI_FLAGS_ICON|LA_UI_FLAGS_CYCLE|LA_UI_FLAGS_TRANSPOSE};
 |  | 
 | 
											
												
													
														|  | -        laShowItemFull(gu, gcr, e, "show_axis",&w, "show_prefix=true;" ,0,0);
 |  | 
 | 
											
												
													
														|  | -        laShowLabel(gu, gcl, "Floor Grid:", 0, 0);
 |  | 
 | 
											
												
													
														|  | -        laShowItemFull(gu, gcr, e, "show_floor_grid", LA_WIDGET_ENUM_CYCLE, 0, 0, 0);
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu, gc, e, "grid_size");
 |  | 
 | 
											
												
													
														|  | -        laShowItem(gu, gc, e, "grid_span");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    b1=laOnConditionThat(uil,c,laPropExpression(&activeui->PP,0));{
 | 
											
												
													
														|  | 
 |  | +        b2=laOnConditionThat(uil,c,laEqual(laPropExpression(&activeui->PP,"type"),laIntExpression(TNS_OBJECT_MESH)));{
 | 
											
												
													
														|  | 
 |  | +            muil=laMakeMenuPage(uil,c,"Mesh"); mc=laFirstColumn(muil);{
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_extrude");
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_make");
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_knife");
 | 
											
												
													
														|  | 
 |  | +                laShowItemFull(muil,mc,&ui->ExtraPP,"_this_M_knife",0,"mode=loop_cut;text=Loop Cut",0,0);
 | 
											
												
													
														|  | 
 |  | +                laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_duplicate");
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_merge");
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_separate");
 | 
											
												
													
														|  | 
 |  | +                laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_subdiv");
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_recalculate_normals");
 | 
											
												
													
														|  | 
 |  | +                laShowSeparator(muil,mc);
 | 
											
												
													
														|  | 
 |  | +                laShowItem(muil,mc,&ui->ExtraPP,"_this_M_delete");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            laShowSeparator(uil,c);
 | 
											
												
													
														|  | 
 |  | +            laShowItem(uil,c,&ui->ExtraPP,"select_mode")->Flags|=LA_UI_FLAGS_EXPAND;
 | 
											
												
													
														|  | 
 |  | +            laShowItem(uil,c,&ui->ExtraPP,"select_through");
 | 
											
												
													
														|  | 
 |  | +        }laEndCondition(uil,b2);
 | 
											
												
													
														|  | 
 |  | +    }laEndCondition(uil,b1);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        //laShowLabel(gu, gcl, "NPR:", 0, 0);
 |  | 
 | 
											
												
													
														|  | -        //laShowItemFull(gu, gcr, e, "npr_line_mode", LA_WIDGET_ENUM_CYCLE, 0, 0, 0);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    laShowSeparator(uil,c)->Expand=1;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    laShowItem(uil,c,&ui->ExtraPP,"delta_mode")->Flags|=LA_UI_FLAGS_CYCLE|LA_UI_FLAGS_HIGHLIGHT;
 | 
											
												
													
														|  | 
 |  | +    laShowItem(uil,c,&ui->ExtraPP,"show_details")->Flags|=LA_UI_FLAGS_ICON;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    laEndRow(uil,b);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    b=laOnConditionThat(uil,c,laPropExpression(&ui->ExtraPP,"show_details"));{
 | 
											
												
													
														|  | 
 |  | +        laShowColumnAdjuster(uil,c);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        g2 = laMakeEmptyGroup(uil, cr, "Info", 0);{
 | 
											
												
													
														|  | 
 |  | +            gu2 = g2->Page; gc2 = laFirstColumn(gu2); gu2->HeightCoeff=-1; g2->Flags|=LA_UI_FLAGS_NO_DECAL;
 | 
											
												
													
														|  | 
 |  | +            g = laMakeGroup(gu2, gc2, "Scene Info", 0);{ gu = g->Page; gc = laFirstColumn(gu);
 | 
											
												
													
														|  | 
 |  | +            laShowLabel(gu, gcl, "Name:", 0, 0);
 | 
											
												
													
														|  | 
 |  | +                laShowItem(gu, gc, &ui->PP, "name");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            g = laMakeGroup(gu2, gc2, "Object", 0);{ gu = g->Page; gc = laFirstColumn(gu);
 | 
											
												
													
														|  | 
 |  | +                b1=laOnConditionThat(gu,gc,laPropExpression(&ui->PP,"active"));{
 | 
											
												
													
														|  | 
 |  | +                    laShowLabel(gu, gc, "Name:", 0, 0);
 | 
											
												
													
														|  | 
 |  | +                    laShowItem(gu, gc, &ui->PP, "active.name");
 | 
											
												
													
														|  | 
 |  | +                    b=laOnConditionThat(gu,gc,laPropExpression(&ui->ExtraPP, "delta_mode"));{
 | 
											
												
													
														|  | 
 |  | +                        laShowLabel(gu, gc, "DLoc:", 0, 0);laShowItem(gu, gc, &ui->PP, "active.dlocation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 | 
											
												
													
														|  | 
 |  | +                        laShowSeparator(gu,gc);
 | 
											
												
													
														|  | 
 |  | +                        laShowLabel(gu, gc, "DRot:", 0, 0);laShowItem(gu, gc, &ui->PP, "active.drotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 | 
											
												
													
														|  | 
 |  | +                        laShowItem(gu, gc, &ui->PP, "active.dscale");
 | 
											
												
													
														|  | 
 |  | +                    }laElse(gu,b);{
 | 
											
												
													
														|  | 
 |  | +                        laShowLabel(gu, gc, "Loc:", 0, 0);laShowItem(gu, gc, &ui->PP, "active.location")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 | 
											
												
													
														|  | 
 |  | +                        laShowSeparator(gu,gc);
 | 
											
												
													
														|  | 
 |  | +                        laShowLabel(gu, gc, "Rot:", 0, 0);laShowItem(gu, gc, &ui->PP, "active.rotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
 | 
											
												
													
														|  | 
 |  | +                        laShowItem(gu, gc, &ui->PP, "active.scale");
 | 
											
												
													
														|  | 
 |  | +                    }laEndCondition(gu,b);
 | 
											
												
													
														|  | 
 |  | +                }laElse(gu,b1);{
 | 
											
												
													
														|  | 
 |  | +                    laShowLabel(gu, gc, "No active object.", 0, 0);
 | 
											
												
													
														|  | 
 |  | +                }laEndCondition(gu,b1);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +    }laEndCondition(uil,b);
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  void la_3DViewEnsureCamera(laCanvasExtra* e){
 |  |  void la_3DViewEnsureCamera(laCanvasExtra* e){
 | 
											
												
													
														|  |      if(e->ViewingCamera) return;
 |  |      if(e->ViewingCamera) return;
 | 
											
										
											
												
													
														|  | @@ -586,8 +595,6 @@ void la_3DViewInit(laUiItem *ui){
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      la_3DViewEnsureCamera(e);
 |  |      la_3DViewEnsureCamera(e);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    e->GridSize = 10;
 |  | 
 | 
											
												
													
														|  | -    e->GridSpan = 15;
 |  | 
 | 
											
												
													
														|  |      e->ShowAxis[0] = 1;
 |  |      e->ShowAxis[0] = 1;
 | 
											
												
													
														|  |      e->ShowAxis[1] = 1;
 |  |      e->ShowAxis[1] = 1;
 | 
											
												
													
														|  |      e->ShowFloorGrid = 1;
 |  |      e->ShowFloorGrid = 1;
 | 
											
										
											
												
													
														|  | @@ -764,6 +771,20 @@ int OPMOD_Canvas(laOperator *a, laEvent *e){
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              lstClearPointer(&Locals);
 |  |              lstClearPointer(&Locals);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            if(e->Type&LA_KEY_MOUSE_SCROLL){
 | 
											
												
													
														|  | 
 |  | +                laUiItem *pui = 0; laListHandle levels={0}; int dir=(e->Type&LA_STATE_DOWN)?1:-1;
 | 
											
												
													
														|  | 
 |  | +                laUiList *duil = la_DetectUiListRecursiveDeep(subu, e->x, e->y, 10000, &pui, 0, 0, 0, 0, &levels);
 | 
											
												
													
														|  | 
 |  | +                laUiListRecord* lip=levels.pLast; laUiList* uuil=lip->uil; laUiItem* upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; int ran=0;
 | 
											
												
													
														|  | 
 |  | +                while (lip && upui){
 | 
											
												
													
														|  | 
 |  | +                    if((ran=laPanUiListAuto(uuil, 0, dir*MAIN.ScrollingSpeed*LA_RH,
 | 
											
												
													
														|  | 
 |  | +                        uuil->L, upui->R-(uuil->ScrollerShownV?(LA_SCROLL_W+bt->RM):0),
 | 
											
												
													
														|  | 
 |  | +                        uuil->U, upui->B-(*upui->Type->Theme)->BM-(uuil->ScrollerShownH?(LA_SCROLL_W+bt->BM):0)))) break;
 | 
											
												
													
														|  | 
 |  | +                    lip=lip->Item.pPrev; uuil=lip->uil;  upui=lip->Item.pPrev?((laUiListRecord*)lip->Item.pPrev)->pui:0; 
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                if(ran)laRedrawCurrentPanel();
 | 
											
												
													
														|  | 
 |  | +                if(ran){return LA_RUNNING;}
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -1039,8 +1060,6 @@ void la_RegisterUiTypesViewerWidgets(){
 | 
											
												
													
														|  |      ct=laRegisterCanvasTemplate("la_3DView", "tns_object", 0, la_RootObjectDraw, la_RootObjectDrawOverlay, la_3DViewInit, la_3DViewDestroy);
 |  |      ct=laRegisterCanvasTemplate("la_3DView", "tns_object", 0, la_RootObjectDraw, la_RootObjectDrawOverlay, la_3DViewInit, la_3DViewDestroy);
 | 
											
												
													
														|  |      pc = laCanvasHasExtraProps(ct, sizeof(laCanvasExtra), 2);{
 |  |      pc = laCanvasHasExtraProps(ct, sizeof(laCanvasExtra), 2);{
 | 
											
												
													
														|  |          _LA_PROP_3D_EXTRA = pc;
 |  |          _LA_PROP_3D_EXTRA = pc;
 | 
											
												
													
														|  | -        laAddIntProperty(pc, "grid_size", "Grid Size", "Floor Grid Size Per Cell", 0, 0, "Unit", 100, 1, 1, 10, 0, offsetof(laCanvasExtra, GridSize), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 |  | 
 | 
											
												
													
														|  | -        laAddIntProperty(pc, "grid_span", "Grid Span", "How Many Grids Are Drawn", 0, 0, 0, 25, 1, 1, 10, 0, offsetof(laCanvasExtra, GridSpan), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 |  | 
 | 
											
												
													
														|  |          p = laAddEnumProperty(pc, "show_axis", "Show Axis", "Show Global X,Y,Z Axis", LA_WIDGET_ENUM_CYCLE, "X,Y,Z", 0, 0, 0, offsetof(laCanvasExtra, ShowAxis), 0, 0, 3, 0, 0, 0, 0, 0, 0, 0);{
 |  |          p = laAddEnumProperty(pc, "show_axis", "Show Axis", "Show Global X,Y,Z Axis", LA_WIDGET_ENUM_CYCLE, "X,Y,Z", 0, 0, 0, offsetof(laCanvasExtra, ShowAxis), 0, 0, 3, 0, 0, 0, 0, 0, 0, 0);{
 | 
											
												
													
														|  |              laAddEnumItem(p, "HIDDEN", "Hidden", "Current Axis Is Hidden", U'🌔');
 |  |              laAddEnumItem(p, "HIDDEN", "Hidden", "Current Axis Is Hidden", U'🌔');
 | 
											
												
													
														|  |              laAddEnumItem(p, "SHOWN", "Shown", "Current Axis Is Shown", U'🌑');
 |  |              laAddEnumItem(p, "SHOWN", "Shown", "Current Axis Is Shown", U'🌑');
 | 
											
										
											
												
													
														|  | @@ -1061,6 +1080,10 @@ void la_RegisterUiTypesViewerWidgets(){
 | 
											
												
													
														|  |              laAddEnumItemAs(p, "NONE", "None", "Regular mode",0,0);
 |  |              laAddEnumItemAs(p, "NONE", "None", "Regular mode",0,0);
 | 
											
												
													
														|  |              laAddEnumItemAs(p, "DELTA", "Delta", "Delta mode",1,0);
 |  |              laAddEnumItemAs(p, "DELTA", "Delta", "Delta mode",1,0);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +        p = laAddEnumProperty(pc, "show_details", "Show Details", "Show detailed information", LA_WIDGET_ENUM_HIGHLIGHT, 0, 0, 0, 0, offsetof(laCanvasExtra, ShowDetails), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
 | 
											
												
													
														|  | 
 |  | +            laAddEnumItem(p, "HIDDEN", "Hidden", "Current Axis Is Hidden", U'🛈');
 | 
											
												
													
														|  | 
 |  | +            laAddEnumItem(p, "SHOWN", "Shown", "Current Axis Is Shown", U'i');
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |          laAddIntProperty(pc, "height_coeff", "Ui Height", "Ui Height Coefficiency Entry", 0, 0, "Rows", 100, -100, 1, 0, 0, offsetof(laCanvasExtra, HeightCoeff), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 |  |          laAddIntProperty(pc, "height_coeff", "Ui Height", "Ui Height Coefficiency Entry", 0, 0, "Rows", 100, -100, 1, 0, 0, offsetof(laCanvasExtra, HeightCoeff), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 | 
											
												
													
														|  |          laAddOperatorProperty(pc, "zoom", "Zoom", "Zoom Viewing Camera", "LA_3d_view_camera_zoom", U'🔎', 0);
 |  |          laAddOperatorProperty(pc, "zoom", "Zoom", "Zoom Viewing Camera", "LA_3d_view_camera_zoom", U'🔎', 0);
 | 
											
												
													
														|  |          laAddOperatorProperty(pc, "rotate", "Rotate", "Rotate Viewing Camera", "LA_3d_view_camera_rotate", U'🗘', 0);
 |  |          laAddOperatorProperty(pc, "rotate", "Rotate", "Rotate Viewing Camera", "LA_3d_view_camera_rotate", U'🗘', 0);
 |