Rename modeldata to navigatortree.

This commit is contained in:
kovacsv 2021-10-24 18:04:20 +02:00
parent 0afce83a49
commit 13cbca26ee
13 changed files with 136 additions and 152 deletions

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -31,6 +31,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -31,6 +31,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -31,6 +31,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>

View File

@ -82,7 +82,7 @@
"website/o3dv/js/exportdialog.js",
"website/o3dv/js/sharingdialog.js",
"website/o3dv/js/cookiedialog.js",
"website/o3dv/js/modeldata.js",
"website/o3dv/js/navigatortree.js",
"website/o3dv/js/navigator.js",
"website/o3dv/js/sidebarpanel.js",
"website/o3dv/js/detailssidebarpanel.js",

View File

@ -41,6 +41,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>
@ -103,7 +104,7 @@
<script type="text/javascript" src="o3dv/js/exportdialog.js"></script>
<script type="text/javascript" src="o3dv/js/sharingdialog.js"></script>
<script type="text/javascript" src="o3dv/js/cookiedialog.js"></script>
<script type="text/javascript" src="o3dv/js/modeldata.js"></script>
<script type="text/javascript" src="o3dv/js/navigatortree.js"></script>
<script type="text/javascript" src="o3dv/js/navigator.js"></script>
<script type="text/javascript" src="o3dv/js/sidebarpanel.js"></script>
<script type="text/javascript" src="o3dv/js/detailssidebarpanel.js"></script>

View File

@ -41,6 +41,7 @@
<script type="text/javascript" src="../source/model/property.js"></script>
<script type="text/javascript" src="../source/model/object.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
<script type="text/javascript" src="../source/model/node.js"></script>
<script type="text/javascript" src="../source/model/model.js"></script>
@ -103,7 +104,7 @@
<script type="text/javascript" src="o3dv/js/exportdialog.js"></script>
<script type="text/javascript" src="o3dv/js/sharingdialog.js"></script>
<script type="text/javascript" src="o3dv/js/cookiedialog.js"></script>
<script type="text/javascript" src="o3dv/js/modeldata.js"></script>
<script type="text/javascript" src="o3dv/js/navigatortree.js"></script>
<script type="text/javascript" src="o3dv/js/navigator.js"></script>
<script type="text/javascript" src="o3dv/js/sidebarpanel.js"></script>
<script type="text/javascript" src="o3dv/js/detailssidebarpanel.js"></script>

View File

@ -1,121 +0,0 @@
OV.MaterialData = class
{
constructor (originalIndex)
{
this.originalIndex = originalIndex;
this.menuItem = null;
}
SetSelected (selected)
{
this.menuItem.SetSelected (selected);
}
CreateMenuItem (name, callbacks)
{
this.menuItem = new OV.TreeViewButtonItem (name);
this.menuItem.OnNameClick (() => {
callbacks.onSelected (this.originalIndex);
});
return this.menuItem;
}
};
OV.MeshData = class
{
constructor (originalIndex)
{
this.originalIndex = originalIndex;
this.visible = true;
this.menuItem = null;
this.showHideButton = null;
}
IsVisible ()
{
return this.visible;
}
SetVisible (visible)
{
this.visible = visible;
if (this.visible) {
this.showHideButton.SetImage ('visible');
} else {
this.showHideButton.SetImage ('hidden');
}
}
SetSelected (selected)
{
this.menuItem.SetSelected (selected);
}
CreateMenuItem (name, callbacks)
{
this.menuItem = new OV.TreeViewButtonItem (name);
let fitToWindowButton = new OV.TreeViewButton ('fit');
fitToWindowButton.OnClick (() => {
callbacks.onFitToWindow (this.originalIndex);
});
this.menuItem.AddButton (fitToWindowButton);
this.showHideButton = new OV.TreeViewButton ('visible');
this.showHideButton.OnClick ((ev) => {
callbacks.onShowHide (this.originalIndex);
});
this.menuItem.AddButton (this.showHideButton);
this.menuItem.OnNameClick (() => {
callbacks.onSelected (this.originalIndex);
});
return this.menuItem;
}
};
OV.ModelData = class
{
constructor ()
{
this.meshDataArr = [];
this.materialDataArr = [];
}
MaterialCount ()
{
return this.materialDataArr.length;
}
GetMaterialData (index)
{
return this.materialDataArr[index];
}
AddMaterialData (materialData)
{
this.materialDataArr.push (materialData);
}
MeshCount ()
{
return this.meshDataArr.length;
}
GetMeshData (index)
{
return this.meshDataArr[index];
}
AddMeshData (meshData)
{
this.meshDataArr.push (meshData);
}
Clear ()
{
this.meshDataArr = [];
this.materialDataArr = [];
}
};

View File

@ -121,7 +121,7 @@ OV.Navigator = class
this.infoDiv = $('<div>').addClass ('ov_navigator_info_panel').addClass ('ov_thin_scrollbar').appendTo (parentDiv);
this.treeView = new OV.TreeView (this.treeDiv);
this.infoPanel = new OV.NavigatorInfoPanel (this.infoDiv);
this.modelData = new OV.ModelData ();
this.navigatorTree = new OV.NavigatorTree ();
this.selection = null;
this.tempSelectedMeshIndex = null;
}
@ -176,13 +176,12 @@ OV.Navigator = class
for (let i = 0; i < model.MaterialCount (); i++) {
let material = model.GetMaterial (i);
let materialName = OV.GetMaterialName (material.name);
let materialData = new OV.MaterialData (i);
let materialItem = materialData.CreateMenuItem (materialName, {
let materialItem = new OV.MaterialItem (materialName, i, {
onSelected : (materialIndex) => {
this.SetSelection (new OV.Selection (OV.SelectionType.Material, materialIndex));
}
});
this.modelData.AddMaterialData (materialData);
this.navigatorTree.AddMaterialItem (materialItem);
materialsItem.AddChild (materialItem);
}
@ -191,9 +190,8 @@ OV.Navigator = class
meshesItem.ShowChildren (true, null);
for (let i = 0; i < model.MeshCount (); i++) {
let mesh = model.GetMesh (i);
let meshData = new OV.MeshData (i);
let meshName = OV.GetMeshName (mesh.GetName ());
let meshItem = meshData.CreateMenuItem (meshName, {
let meshItem = new OV.MeshItem (meshName, i, {
onShowHide : (meshIndex) => {
this.ToggleMeshVisibility (meshIndex);
},
@ -207,7 +205,7 @@ OV.Navigator = class
this.SetSelection (new OV.Selection (OV.SelectionType.Mesh, meshIndex));
}
});
this.modelData.AddMeshData (meshData);
this.navigatorTree.AddMeshItem (meshItem);
meshesItem.AddChild (meshItem);
}
@ -217,20 +215,20 @@ OV.Navigator = class
MeshCount ()
{
return this.modelData.MeshCount ();
return this.navigatorTree.MeshCount ();
}
IsMeshVisible (meshIndex)
{
let meshData = this.modelData.GetMeshData (meshIndex);
return meshData.IsVisible ();
let meshItem = this.navigatorTree.GetMeshItem (meshIndex);
return meshItem.IsVisible ();
}
HasHiddenMesh ()
{
for (let i = 0; i < this.modelData.MeshCount (); i++) {
let meshData = this.modelData.GetMeshData (i);
if (!meshData.IsVisible ()) {
for (let i = 0; i < this.navigatorTree.MeshCount (); i++) {
let meshItem = this.navigatorTree.GetMeshItem (i);
if (!meshItem.IsVisible ()) {
return true;
}
}
@ -239,25 +237,25 @@ OV.Navigator = class
ShowAllMeshes ()
{
for (let i = 0; i < this.modelData.MeshCount (); i++) {
let meshData = this.modelData.GetMeshData (i);
meshData.SetVisible (true);
for (let i = 0; i < this.navigatorTree.MeshCount (); i++) {
let meshItem = this.navigatorTree.GetMeshItem (i);
meshItem.SetVisible (true);
}
this.callbacks.updateMeshesVisibility ();
}
ToggleMeshVisibility (meshIndex)
{
let meshData = this.modelData.GetMeshData (meshIndex);
meshData.SetVisible (!meshData.IsVisible ());
let meshItem = this.navigatorTree.GetMeshItem (meshIndex);
meshItem.SetVisible (!meshItem.IsVisible ());
this.callbacks.updateMeshesVisibility ();
}
IsMeshIsolated (meshIndex)
{
for (let i = 0; i < this.modelData.MeshCount (); i++) {
let meshData = this.modelData.GetMeshData (i);
if (i !== meshIndex && meshData.IsVisible ()) {
for (let i = 0; i < this.navigatorTree.MeshCount (); i++) {
let meshItem = this.navigatorTree.GetMeshItem (i);
if (i !== meshIndex && meshItem.IsVisible ()) {
return false;
}
}
@ -267,12 +265,12 @@ OV.Navigator = class
IsolateMesh (meshIndex)
{
let isIsolated = this.IsMeshIsolated (meshIndex);
for (let i = 0; i < this.modelData.MeshCount (); i++) {
let meshData = this.modelData.GetMeshData (i);
for (let i = 0; i < this.navigatorTree.MeshCount (); i++) {
let meshItem = this.navigatorTree.GetMeshItem (i);
if (i === meshIndex || isIsolated) {
meshData.SetVisible (true);
meshItem.SetVisible (true);
} else {
meshData.SetVisible (false);
meshItem.SetVisible (false);
}
}
this.callbacks.updateMeshesVisibility ();
@ -300,9 +298,9 @@ OV.Navigator = class
function SetEntitySelection (obj, selection, select)
{
if (selection.type === OV.SelectionType.Material) {
obj.modelData.GetMaterialData (selection.index).SetSelected (select);
obj.navigatorTree.GetMaterialItem (selection.index).SetSelected (select);
} else if (selection.type === OV.SelectionType.Mesh) {
obj.modelData.GetMeshData (selection.index).SetSelected (select);
obj.navigatorTree.GetMeshItem (selection.index).SetSelected (select);
}
}
@ -377,7 +375,7 @@ OV.Navigator = class
this.titleDiv.empty ();
this.treeView.Clear ();
this.infoPanel.Clear ();
this.modelData.Clear ();
this.navigatorTree.Clear ();
this.selection = null;
}
};

View File

@ -0,0 +1,98 @@
OV.MaterialItem = class extends OV.TreeViewButtonItem
{
constructor (name, originalIndex, callbacks)
{
super (name);
this.originalIndex = originalIndex;
this.OnNameClick (() => {
callbacks.onSelected (this.originalIndex);
});
}
};
OV.MeshItem = class extends OV.TreeViewButtonItem
{
constructor (name, originalIndex, callbacks)
{
super (name);
this.originalIndex = originalIndex;
this.visible = true;
this.fitToWindowButton = new OV.TreeViewButton ('fit');
this.fitToWindowButton.OnClick (() => {
callbacks.onFitToWindow (this.originalIndex);
});
this.AddButton (this.fitToWindowButton);
this.showHideButton = new OV.TreeViewButton ('visible');
this.showHideButton.OnClick ((ev) => {
callbacks.onShowHide (this.originalIndex);
});
this.AddButton (this.showHideButton);
this.OnNameClick (() => {
callbacks.onSelected (this.originalIndex);
});
}
IsVisible ()
{
return this.visible;
}
SetVisible (visible)
{
this.visible = visible;
if (this.visible) {
this.showHideButton.SetImage ('visible');
} else {
this.showHideButton.SetImage ('hidden');
}
}
};
OV.NavigatorTree = class
{
constructor ()
{
this.meshItems = [];
this.materialItems = [];
}
MaterialCount ()
{
return this.materialItems.length;
}
GetMaterialItem (index)
{
return this.materialItems[index];
}
AddMaterialItem (materialItem)
{
this.materialItems.push (materialItem);
}
MeshCount ()
{
return this.meshItems.length;
}
GetMeshItem (index)
{
return this.meshItems[index];
}
AddMeshItem (meshItem)
{
this.meshItems.push (meshItem);
}
Clear ()
{
this.meshItems = [];
this.materialItems = [];
}
};