[x3d-public] ECMAScript SAI. Creating PROTOs

John Carlson yottzumm at gmail.com
Wed Apr 22 02:04:15 PDT 2020


I'm using this code below pasted into the dev console of the page:

https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/desert3X_ITE.html


Apparently, the XML doesn't parse the ProtoDeclare????

Should I use JSON?

What am I doing wrong?  A lot,  I know!

Thanks,

John


x_ite.min.js:19 (3) [Error: Invalid XML: <?xml version="1.0"
encoding="undefined"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DT…, SyntaxError: Unexpected token < in
JSON at position 0
    at JSON.parse (<anonymous>)
    at c.a (h…, Error:
********************************************************************************
Parser err…]
createX3DFromString @ x_ite.min.js:19
createX3DFromString @ x_ite.min.js:42
(anonymous) @ VM28:5
x_ite.min.js:19 Uncaught Error: Couldn't parse x3d syntax.
    at createX3DFromString (x_ite.min.js:19)
    at v.createX3DFromString (x_ite.min.js:42)
    at <anonymous>:5:29

Below is the code:
============================================
let browser = X3D.getBrowser();
let X3D0 = {};
X3D0.profile = "Immersive";
X3D0.version = "3.3";
let ProtoDeclare2 = browser.createX3DFromString(`<?xml version="1.0"
encoding="undefined"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D undefined//EN" "
http://www.web3d.org/specifications/x3d-undefined.dtd">
<ProtoDeclare name="anyShape" ><ProtoInterface><field name="myShape"
accessType="inputOutput" type="MFNode"><Shape><Sphere
containerField="geometry"></Sphere>
</Shape>
</field>
</ProtoInterface>
<ProtoBody><Transform><IS><connect nodeField="children"
protoField="myShape"></connect>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>`);
ProtoDeclare2.name = "anyShape";
let ProtoInterface3 = browser.currentScene.createNode("ProtoInterface");
let field4 = browser.currentScene.createNode("field");
field4.name = "myShape";
field4.accessType = "inputOutput";
field4.type = "MFNode";
let Shape5 = browser.currentScene.createNode("Shape");
let Sphere6 = browser.currentScene.createNode("Sphere");
Shape5.geometry = Sphere6;

field4.children = new MFNode();

field4.children[0] = Shape5;

ProtoInterface3.field = new MFNode();

ProtoInterface3.field[0] = field4;

ProtoDeclare2.protoInterface = ProtoInterface3;

let ProtoBody7 = browser.currentScene.createNode("ProtoBody");
let Transform8 = browser.currentScene.createNode("Transform");
let IS9 = browser.currentScene.createNode("IS");
let connect10 = browser.currentScene.createNode("connect");
connect10.nodeField = "children";
connect10.protoField = "myShape";
IS9.connect = new MFNode();

IS9.connect[0] = connect10;

Transform8.iS = IS9;

ProtoBody7.children = new MFNode();

ProtoBody7.children[0] = Transform8;

ProtoDeclare2.protoBody = ProtoBody7;

browser.currentScene.children = new MFNode();

browser.currentScene.children[0] = ProtoDeclare2;

let ProtoDeclare11 = browser.createX3DFromString(`<?xml version="1.0"
encoding="undefined"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D undefined//EN" "
http://www.web3d.org/specifications/x3d-undefined.dtd">
<ProtoDeclare name="one" ><ProtoInterface><field name="myShape"
accessType="inputOutput" type="MFNode"><Shape><Cylinder
containerField="geometry"></Cylinder>
</Shape>
</field>
</ProtoInterface>
<ProtoBody><Transform><ProtoInstance name="anyShape"><IS><connect
nodeField="myShape" protoField="myShape"></connect>
</IS>
</ProtoInstance>
</Transform>
</ProtoBody>
</ProtoDeclare>`);
ProtoDeclare11.name = "one";
let ProtoInterface12 = browser.currentScene.createNode("ProtoInterface");
let field13 = browser.currentScene.createNode("field");
field13.name = "myShape";
field13.accessType = "inputOutput";
field13.type = "MFNode";
let Shape14 = browser.currentScene.createNode("Shape");
let Cylinder15 = browser.currentScene.createNode("Cylinder");
Shape14.geometry = Cylinder15;

field13.children = new MFNode();

field13.children[0] = Shape14;

ProtoInterface12.field = new MFNode();

ProtoInterface12.field[0] = field13;

ProtoDeclare11.protoInterface = ProtoInterface12;

let ProtoBody16 = browser.currentScene.createNode("ProtoBody");
let Transform17 = browser.currentScene.createNode("Transform");
let ProtoInstance18 = browser.currentScene.createNode("ProtoInstance");
ProtoInstance18.name = "anyShape";
let IS19 = browser.currentScene.createNode("IS");
let connect20 = browser.currentScene.createNode("connect");
connect20.nodeField = "myShape";
connect20.protoField = "myShape";
IS19.connect = new MFNode();

IS19.connect[0] = connect20;

ProtoInstance18.iS = IS19;

Transform17.children = new MFNode();

Transform17.children[0] = ProtoInstance18;

ProtoBody16.children = new MFNode();

ProtoBody16.children[0] = Transform17;

ProtoDeclare11.protoBody = ProtoBody16;

browser.currentScene.children[1] = ProtoDeclare11;

let ProtoInstance21 = browser.currentScene.createNode("ProtoInstance");
ProtoInstance21.name = "one";
let fieldValue22 = browser.currentScene.createNode("fieldValue");
fieldValue22.name = "myShape";
let Shape23 = browser.currentScene.createNode("Shape");
let Box24 = browser.currentScene.createNode("Box");
Box24.size = new SFVec3f(new float[140,140,140]);
Shape23.geometry = Box24;

fieldValue22.children = new MFNode();

fieldValue22.children[0] = Shape23;

ProtoInstance21.fieldValue = new MFNode();

ProtoInstance21.fieldValue[0] = fieldValue22;

browser.currentScene.children[2] = ProtoInstance21;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200422/0098c8a4/attachment.html>


More information about the x3d-public mailing list