Add node class.

This commit is contained in:
kovacsv 2021-10-16 11:53:19 +02:00
parent 2ab03c7213
commit 9dcf49b548
12 changed files with 126 additions and 0 deletions

View File

@ -33,6 +33,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -33,6 +33,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -33,6 +33,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -33,6 +33,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -32,6 +32,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

56
source/model/node.js Normal file
View File

@ -0,0 +1,56 @@
OV.Node = class
{
constructor ()
{
this.parent = null;
this.name = '';
this.childNodes = [];
this.meshIndices = [];
}
GetParent ()
{
return this.parent;
}
GetName ()
{
return this.name;
}
SetName (name)
{
this.name = name;
}
AddChildNode (node)
{
node.parent = this;
this.childNodes.push (node);
return this.childNodes.length - 1;
}
GetChildNodes ()
{
return this.childNodes;
}
AddMeshIndex (index)
{
this.meshIndices.push (index);
return this.meshIndices.length - 1;
}
GetMeshIndices ()
{
return this.meshIndices;
}
Enumerate (processor)
{
processor (this);
for (const childNode of this.childNodes) {
childNode.Enumerate (processor);
}
}
};

60
test/tests/node_test.js Normal file
View File

@ -0,0 +1,60 @@
var assert = require ('assert');
describe ('Node', function() {
it ('Default Initialization', function () {
let node = new OV.Node ();
assert.strictEqual (node.GetName (), '');
assert.deepStrictEqual (node.GetChildNodes (), []);
assert.deepStrictEqual (node.GetMeshIndices (), []);
});
it ('Set Name', function () {
let node = new OV.Node ();
node.SetName ('New Name');
assert.strictEqual (node.GetName (), 'New Name');
});
it ('Add Mesh Indices', function () {
let node = new OV.Node ();
node.AddMeshIndex (0);
node.AddMeshIndex (4);
node.AddMeshIndex (8);
assert.deepStrictEqual (node.GetMeshIndices (), [0, 4, 8]);
});
it ('Add Child Node', function () {
let node = new OV.Node ();
let child1 = new OV.Node ();
let child2 = new OV.Node ();
child1.SetName ('Child 1');
child2.SetName ('Child 2');
node.AddChildNode (child1);
node.AddChildNode (child2);
assert.strictEqual (node.GetChildNodes ().length, 2);
assert.strictEqual (node.GetChildNodes ()[0].GetName (), 'Child 1');
assert.strictEqual (node.GetChildNodes ()[1].GetName (), 'Child 2');
assert.strictEqual (node.GetChildNodes ()[0].GetParent (), node);
assert.strictEqual (node.GetChildNodes ()[1].GetParent (), node);
});
it ('Recursive Enumeration', function () {
let node = new OV.Node ();
let child1 = new OV.Node ();
let child2 = new OV.Node ();
let child11 = new OV.Node ();
let child12 = new OV.Node ();
node.AddChildNode (child1);
node.AddChildNode (child2);
child1.AddChildNode (child11);
child1.AddChildNode (child12);
let enumerated = [];
node.Enumerate ((child) => {
enumerated.push (child);
});
assert.deepStrictEqual (enumerated, [node, child1, child11, child12, child2]);
});
});

View File

@ -29,6 +29,7 @@
"source/model/element.js", "source/model/element.js",
"source/model/mesh.js", "source/model/mesh.js",
"source/model/meshbuffer.js", "source/model/meshbuffer.js",
"source/model/node.js",
"source/model/model.js", "source/model/model.js",
"source/model/topology.js", "source/model/topology.js",
"source/model/modelutils.js", "source/model/modelutils.js",

View File

@ -42,6 +42,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>

View File

@ -42,6 +42,7 @@
<script type="text/javascript" src="../source/model/element.js"></script> <script type="text/javascript" src="../source/model/element.js"></script>
<script type="text/javascript" src="../source/model/mesh.js"></script> <script type="text/javascript" src="../source/model/mesh.js"></script>
<script type="text/javascript" src="../source/model/meshbuffer.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> <script type="text/javascript" src="../source/model/model.js"></script>
<script type="text/javascript" src="../source/model/topology.js"></script> <script type="text/javascript" src="../source/model/topology.js"></script>
<script type="text/javascript" src="../source/model/modelutils.js"></script> <script type="text/javascript" src="../source/model/modelutils.js"></script>