|
@@ -131,11 +131,11 @@ void la_RootObjectDraw(laBoxedTheme *bt, tnsObject *root, laUiItem* ui){
|
|
|
tnsEnableShaderv(T->immShader);
|
|
|
tnsUnbindTexture(); tnsUniformUseTexture(T->immShader,0,0); tnsUseMultiplyColor(0);
|
|
|
glPointSize(6); glLineWidth(3);
|
|
|
- tnsDrawObjectTree(root, 0, 0);
|
|
|
+ tnsDrawObjectTree(root, 0, 0, e->SelectMode);
|
|
|
glPointSize(1); glLineWidth(10);
|
|
|
|
|
|
glDepthMask(GL_FALSE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //glEnable(GL_POLYGON_OFFSET_LINE); glPolygonOffset(1,1);
|
|
|
- tnsDrawObjectTree(root, e->ActiveObject, 1);
|
|
|
+ tnsDrawObjectTree(root, root->Active, 1, 0);
|
|
|
glDepthMask(GL_TRUE); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
|
|
glLineWidth(1);
|
|
|
|
|
@@ -430,9 +430,14 @@ void laDefault3DViewOverlay(laUiItem *ui){
|
|
|
|
|
|
laShowColumnAdjuster(uil, c);
|
|
|
|
|
|
+ b=laBeginRow(uil,cl,0,0);
|
|
|
+ laShowItem(uil,cl,&ui->ExtraPP,"select_mode")->Flags|=LA_UI_FLAGS_EXPAND;
|
|
|
+ laShowItem(uil,cl,&ui->ExtraPP,"select_through");
|
|
|
+ laEndRow(uil,b);
|
|
|
+
|
|
|
b=laBeginRow(uil,cl,0,0);
|
|
|
laShowLabel(uil,cl,"Active Object: ",0,0);
|
|
|
- laShowItem(uil,cl,&ui->ExtraPP,"active_object.identifier")->Flags|=LA_UI_FLAGS_PLAIN;
|
|
|
+ laShowItem(uil,cl,&ui->PP,"identifier")->Flags|=LA_UI_FLAGS_PLAIN;
|
|
|
laEndRow(uil,b);
|
|
|
|
|
|
g = laMakeFoldableGroup(uil, cr, "Scene Info", 0, 1);{
|
|
@@ -451,11 +456,11 @@ void laDefault3DViewOverlay(laUiItem *ui){
|
|
|
laSplitColumn(gu, gc, 0.35);
|
|
|
gcl = laLeftColumn(gc, 0);
|
|
|
gcr = laRightColumn(gc, 0);
|
|
|
- laShowItem(gu, gc, e, "active_object.name");
|
|
|
- laShowLabel(gu, gcl, "Location:", 0, 0);laShowItem(gu, gcr, e, "active_object.location")->Flags|=LA_UI_FLAGS_TRANSPOSE;
|
|
|
+ laShowItem(gu, gc, &ui->PP, "active.name");
|
|
|
+ laShowLabel(gu, gcl, "Location:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.location")->Flags|=LA_UI_FLAGS_TRANSPOSE;
|
|
|
laShowSeparator(gu,gc);
|
|
|
- laShowLabel(gu, gcl, "Rotation:", 0, 0);laShowItem(gu, gcr, e, "active_object.rotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
|
|
|
- laShowItem(gu, gc, e, "active_object.scale");
|
|
|
+ laShowLabel(gu, gcl, "Rotation:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.rotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
|
|
|
+ laShowItem(gu, gc, &ui->PP, "active.scale");
|
|
|
}
|
|
|
g = laMakeFoldableGroup(uil, cr, "Display", 0, 1);{
|
|
|
gu = g->Page;
|
|
@@ -872,6 +877,12 @@ void la_RegisterViewerOperators(){
|
|
|
|
|
|
void *tnsget_detached_FirstScene(void *UNUSED1, void *UNUSED2);
|
|
|
|
|
|
+void laset_CanvasSelectMode(laCanvasExtra* ex, int mode){
|
|
|
+ ex->SelectMode=mode; laUiItem* ui=ex->ParentUi;
|
|
|
+ tnsObject*root=ui?ui->PP.EndInstance:0; if(!root) return 0;
|
|
|
+ if(root->Active){ if(root->Active->Type==TNS_OBJECT_MESH && ((tnsMeshObject*)root->Active)->Mode==TNS_MESH_EDIT_MODE){ tnsMMeshEnsureSelection(root->Active, mode); } }
|
|
|
+}
|
|
|
+
|
|
|
void la_RegisterUiTypesViewerWidgets(){
|
|
|
laPropContainer *pc = 0;
|
|
|
laProp *p = 0;
|
|
@@ -906,11 +917,6 @@ void la_RegisterUiTypesViewerWidgets(){
|
|
|
laAddEnumItem(p, "too_wide", "Too Wide", "Line width is too wide for graphic hadware", L'❌');
|
|
|
laAddEnumItem(p, "too_thin", "Too Thin", "Line width is too thin for graphic hadware", L'❌');
|
|
|
}
|
|
|
- p = laAddEnumProperty(pc, "frame_number", "Frame Number", "Enable Frame Number Display At The Bottom Of The Frame Cursor", 0, 0, 0, 0, 0,
|
|
|
- offsetof(laCanvasExtra, ShowFrameNumber), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
- laAddEnumItem(p, "hidden", "Hidden", "Don't Draw Frame Number", L'🌔');
|
|
|
- laAddEnumItem(p, "shown", "Shown", "Draw Frame Number", L'🌑');
|
|
|
- }
|
|
|
p = laAddEnumProperty(pc, "clear_background", "Clear Background", "Clear Background", 0, 0, 0, 0, 0, offsetof(laCanvasExtra, ClearBackground), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
laAddEnumItem(p, "no", "No", "Don't Clear Background", L'🌔');
|
|
|
laAddEnumItem(p, "yes", "Yes", "Clear Background", L'🌑');
|
|
@@ -937,18 +943,23 @@ void la_RegisterUiTypesViewerWidgets(){
|
|
|
ct=laRegisterCanvasTemplate("la_3DView", "tns_object", la_RootObjectDraw, la_RootObjectDrawOverlay, la_3DViewInit, la_3DViewDestroy);
|
|
|
pc = laCanvasHasExtraProps(ct, sizeof(laCanvasExtra), 2);{
|
|
|
_LA_PROP_3D_EXTRA = pc;
|
|
|
- laAddSubGroup(pc, "active_object", "Active Object", "Active object in this viewport", "tns_object",tnsget_ObjectType, 0, 0, offsetof(laCanvasExtra, ActiveObject), 0, 0, 0, 0, 0, 0, 0, LA_UDF_REFER);
|
|
|
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);{
|
|
|
- laAddEnumItem(p, "hidden", "Hidden", "Current Axis Is Hidden", L'🌔');
|
|
|
- laAddEnumItem(p, "shown", "Shown", "Current Axis Is Shown", L'🌑');
|
|
|
+ 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", L'🌔');
|
|
|
+ laAddEnumItem(p, "SHOWN", "Shown", "Current Axis Is Shown", L'🌑');
|
|
|
+ }
|
|
|
+ p = laAddEnumProperty(pc, "show_floor_grid", "Show Floor Grid", "Show Floor Grid", 0, 0, 0, 0, 0, offsetof(laCanvasExtra, ShowFloorGrid), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
+ laAddEnumItem(p, "HIDDEN", "Hidden", "Current Axis Is Hidden", L'🌔');
|
|
|
+ laAddEnumItem(p, "SHOWN", "Shown", "Current Axis Is Shown", L'🌑');
|
|
|
+ }
|
|
|
+ p = laAddEnumProperty(pc, "select_mode", "Select Mode", "Select by vertices or edges", 0, 0, 0, 0, 0, offsetof(laCanvasExtra, SelectMode), 0, laset_CanvasSelectMode, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
+ laAddEnumItemAs(p, "VERTS", "Verts", "Select by vertices", LA_CANVAS_SELECT_MODE_VERTS,0);
|
|
|
+ laAddEnumItemAs(p, "EDGES", "Edges", "Select by edges", LA_CANVAS_SELECT_MODE_EDGES,0);
|
|
|
}
|
|
|
- p = laAddEnumProperty(pc, "show_floor_grid", "Show Floor Grid", "Show Floor Grid", 0, 0, 0, 0, 0,
|
|
|
- offsetof(laCanvasExtra, ShowFloorGrid), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
- laAddEnumItem(p, "hidden", "Hidden", "Current Axis Is Hidden", L'🌔');
|
|
|
- laAddEnumItem(p, "shown", "Shown", "Current Axis Is Shown", L'🌑');
|
|
|
+ p = laAddEnumProperty(pc, "select_through", "Select Through", "Select through stuff", LA_WIDGET_ENUM_HIGHLIGHT, 0, 0, 0, 0, offsetof(laCanvasExtra, SelectThrough), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);{
|
|
|
+ laAddEnumItemAs(p, "OFF", "Off", "Don't select through stuff", LA_CANVAS_SELECT_THROUGH_OFF,0);
|
|
|
+ laAddEnumItemAs(p, "ON", "On", "Select through stuff", LA_CANVAS_SELECT_THROUGH_ON,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", L'🔎', 0);
|