package Savage.Buildings.HouseSeksitSiripala;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Interpolation.*;
import org.web3d.x3d.jsail.Navigation.*;
import org.web3d.x3d.jsail.PointingDeviceSensor.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Sound.*;
import org.web3d.x3d.jsail.Time.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Toilet with movaable lid and sound effect. </p>
 <p> Related links: Catalog page <a href="../../../../Buildings/HouseSeksitSiripala/ToiletIndex.html" target="_blank">Toilet</a>,  source <a href="../../../../Buildings/HouseSeksitSiripala/Toilet.java">Toilet.java</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../Buildings/HouseSeksitSiripala/Toilet.x3d">Toilet.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Toilet with movaable lid and sound effect. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Seksit Siripala </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 12 September 2002 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 20 October 2019 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Savage/Buildings/HouseSeksitSiripala/Toilet.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/Buildings/HouseSeksitSiripala/Toilet.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="../../../../Buildings/HouseSeksitSiripala/../../license.html">../../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Seksit Siripala
 */

public class Toilet
{
	/** Default constructor to create this object. */
	public Toilet ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_0)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("Toilet.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Toilet with movaable lid and sound effect."))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Seksit Siripala"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("12 September 2002"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/Buildings/HouseSeksitSiripala/Toilet.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("Toilet.x3d"))
    .addChild(new Transform()
      .addChild(new Transform().setRotation(0.0,-1.0,0.0,1.57079).setScale(0.494505,0.652912,1.0).setTranslation(-0.190905,-0.37962,0.435344)
        .addChild(new Shape()
          .setAppearance(new Appearance()
            .setMaterial(new Material()))
          .setGeometry(new Box())))
      .addChild(new Transform().setTranslation(-0.19803,-5.96046E-8,0.581482)
        .addChild(new Collision().setEnabled(false)
          .addChild(new Group()
            .addChild(new Group()
              .addChild(new Group()
                .addChild(new Shape()
                  .setAppearance(new Appearance()
                    .setMaterial(new Material("_DefMat")))
                  .setGeometry(new IndexedFaceSet().setCcw(false).setCreaseAngle(1.44042).setSolid(false).setCoordIndex(getIndexedFaceSet_10_17_coordIndex())
                    .setCoord(new Coordinate().setPoint(getCoordinate_11_17_point()))))))))))
    .addChild(new Transform().setRotation(0.0,1.0,0.0,0.0494167).setScale(0.5564,0.873727,0.681617).setTranslation(-0.221256,-2.19389,1.94541)
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setAmbientIntensity(0.25).setDiffuseColor(0.0,0.631244,0.748016).setShininess(0.642424).setSpecularColor(0.915152,0.915152,0.915152).setTransparency(0.510638)))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(0.5).setSolid(false).setCoordIndex(new int[] {16,15,14,-1,16,14,13,-1,16,13,12,-1,16,12,11,-1,16,11,10,-1,16,10,9,-1,16,9,8,-1,16,8,7,-1,16,7,6,-1,16,6,5,-1,16,5,4,-1,16,4,3,-1,16,3,2,-1,16,2,1,-1,16,1,0,-1,16,0,15,-1})
          .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,1.0,-1.0,0.382683,1.0,-0.92388,0.707107,1.0,-0.707107,0.92388,1.0,-0.382683,1.0,1.0,4.37114E-8,0.92388,1.0,0.382684,0.707107,1.0,0.707107,0.382683,1.0,0.92388,1.50996E-7,1.0,1.0,-0.382683,1.0,0.92388,-0.707107,1.0,0.707107,-0.92388,1.0,0.382684,-1.0,1.0,-1.19249E-8,-0.923879,1.0,-0.382684,-0.707107,1.0,-0.707107,-0.382683,1.0,-0.92388,0.0,1.0,0.0}))))))
    .addChild(new Transform()
      .addChild(new TouchSensor("touchSensorTrigger_0").setDescription("touch to activate"))
      .addChild(new Transform("_1").setCenter(0.74077,-0.315403,1.61988E-7).setRotation(1.0,-1.73877E-6,1.95672E-6,1.57079).setScale(0.191347,0.0374406,0.0531332).setTranslation(-1.55668,0.417836,0.970123)
        .addChild(new Group()
          .addChild(new Group("tflush")
            .addChild(new TimeSensor("Time_2").setCycleInterval(0.8)))
          .addChild(new OrientationInterpolator("UnnamedShapeRotationInterp_3").setKey(new double[] {0.0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1.0}).setKeyValue(new MFRotation(new double[] {1.0,-1.73877E-6,1.95672E-6,1.57079,0.994735,0.0724649,0.0724687,1.57608,0.971878,0.166512,0.166516,1.59932,0.954202,0.211539,0.211543,1.61766,0.961666,0.193903,0.193907,1.60988,0.977376,0.149557,0.149561,1.59368,0.991504,0.0919768,0.0919807,1.57933,0.998658,0.0366171,0.036621,1.57214,1.0,-1.83338E-6,1.93875E-6,1.57079}))))
        .addChild(new TouchSensor("Touch_4"))
        .addChild(new Shape()
          .setAppearance(new Appearance()
            .setMaterial(new Material().setAmbientIntensity(0.256).setDiffuseColor(0.155308,0.150902,0.151742).setShininess(0.102041).setSpecularColor(0.528268,0.524391,0.524455)))
          .setGeometry(new IndexedFaceSet().setCreaseAngle(1.53973).setCoordIndex(new int[] {0,1,3,2,-1,4,5,7,6,-1,6,7,1,0,-1,2,3,5,4,-1,6,0,2,4,-1,1,7,5,3,-1})
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {-1.0,1.0,1.0,-1.0,-1.0,1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0,1.0,-1.0,1.0,-1.0,-1.0,-0.0527761,0.369192,-0.528911,-0.0527761,-1.63081,-0.528911}))))))
      .addChild(new Sound("toilet1").setLocation(-0.957652,0.102433,0.970123).setMinBack(12.0).setMinFront(12.0).setPriority(1.0)
        .setSource(new AudioClip("Sound1clip_5").setDescription("toilet flushing sound").setUrl(new String[] {"toilet.wav","https://www.web3d.org/x3d/content/examples/Savage/Buildings/HouseSeksitSiripala/toilet.wav"}))))
    .addChild(new ROUTE().setFromNode("Touch_4").setFromField("touchTime").setToNode("Time_2").setToField("set_startTime"))
    .addChild(new ROUTE().setFromNode("Time_2").setFromField("fraction_changed").setToNode("UnnamedShapeRotationInterp_3").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("UnnamedShapeRotationInterp_3").setFromField("value_changed").setToNode("_1").setToField("set_rotation"))
    .addChild(new ROUTE().setFromNode("touchSensorTrigger_0").setFromField("touchTime").setToNode("Sound1clip_5").setToField("set_startTime"))
    .addChild(new ROUTE().setFromNode("Touch_4").setFromField("touchTime").setToNode("Sound1clip_5").setToField("set_startTime")));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method

		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_10_17_coordIndex_1()
		{
			int[] value = {13,2,0,-1,10,6,5,-1,11,5,3,-1,13,3,2,-1,11,3,13,-1,3,5,4,-1,0,2,1,-1,7,9,8,-1,9,6,10,-1,9,7,6,-1,11,13,12,-1,10,5,11,-1,0,1,15,-1,0,15,14,-1,1,2,16,-1,1,16,15,-1,2,3,17,-1,2,17,16,-1,3,18,17,-1,3,19,18,-1,3,4,20,-1,3,20,19,-1,4,5,21,-1,4,21,20,-1,5,6,22,-1,5,22,21,-1,6,7,23,-1,6,23,22,-1,7,8,24,-1,7,24,23,-1,8,9,25,-1,8,25,24,-1,9,10,26,-1,9,26,25,-1,10,11,27,-1,10,27,26,-1,11,28,27,-1,11,29,28,-1,11,12,30,-1,11,30,29,-1,12,13,31,-1,12,31,30,-1,13,32,31,-1,13,33,32,-1,13,0,14,-1,13,14,33,-1,14,15,35,-1,14,35,34,-1,15,16,36,-1,15,36,35,-1,16,17,37,-1,16,37,36,-1,38,17,18,-1,17,38,37,-1,18,19,38,-1,39,19,20,-1,19,39,38,-1,20,21,39,-1,21,22,40,-1,21,40,39,-1,22,23,41,-1,22,41,40,-1,23,24,42,-1,23,42,41,-1,24,25,43,-1,24,43,42,-1,25,26,44,-1,25,44,43,-1,26,60,44,-1,60,26,61,-1,27,28,45,-1,46,28,29,-1,28,46,45,-1,29,30,46,-1,31,46,30,-1,31,32,47,-1,32,33,48,-1,32,48,47,-1,33,14,34,-1,33,34,48,-1,35,82,66,-1,67,36,50,-1,36,37,50,-1,37,38,52,-1,37,51,50,-1,37,52,51,-1,38,39,54,-1,38,53,52,-1,38,54,53,-1,39,40,55,-1,39,55,54,-1,40,41,56,-1,40,56,55,-1,41,42,57,-1,41,57,56,-1,42,43,58,-1,42,58,57,-1,43,44,59,-1,43,59,58,-1,61,26,27,-1,44,60,59,-1,61,27,45,-1,45,46,63,-1,45,62,61,-1,45,63,62,-1,47,46,31,-1,63,78,77,-1,79,49,65,-1,49,79,48,-1,48,34,49,-1,35,66,49,-1,49,66,65,-1,35,49,34,-1,68,50,51,-1,50,68,67,-1,51,52,68,-1,69,52,53,-1,52,69,68,-1,53,54,69,-1,54,55,70,-1,54,70,69,-1,55,56,71,-1,55,71,70,-1,56,57,72,-1,56,72,71,-1,57,58,73,-1,57,73,72,-1,58,59,74,-1,58,74,73,-1,75,59,60,-1,59,75,74,-1,60,61,75,-1,76,61,62,-1,61,76,75,-1,62,63,76,-1,46,47,64,-1,63,77,76,-1,63,64,78,-1,46,64,63,-1,48,79,47,-1,64,79,78,-1,47,79,64,-1,65,66,81,-1,65,81,80,-1,83,36,67,-1,66,82,81,-1,35,83,82,-1,36,83,35,-1,67,68,85,-1,67,84,83,-1,67,85,84,-1,68,69,87,-1,68,86,85,-1,68,87,86,-1,69,70,88,-1,69,88,87,-1,70,71,89,-1,70,89,88,-1,71,72,90,-1,71,90,89,-1,72,73,91,-1,72,91,90,-1,73,74,92,-1,73,92,91,-1,74,75,94,-1,74,93,92,-1,74,94,93,-1,75,76,96,-1,75,95,94,-1,75,96,95,-1,97,76,77,-1,76,97,96,-1,77,78,97,-1,78,79,98,-1,78,98,97,-1,79,65,80,-1,79,80,98,-1,80,81,100,-1,80,100,99,-1,81,82,101,-1,81,101,100,-1,82,83,102,-1,82,102,101,-1,83,84,103,-1,83,103,102,-1,84,85,104,-1,84,104,103,-1,85,86,105,-1,85,105,104,-1,86,87,106,-1,86,106,105,-1,87,88,107,-1,87,107,106,-1,88,89,108,-1,88,108,107,-1,89,90,109,-1,89,109,108,-1,90,91,110,-1,90,110,109,-1,91,92,111,-1,91,111,110,-1,92,93,112,-1,92,112,111,-1,93,94,113,-1,93,113,112,-1,94,95,114,-1,94,114,113,-1,95,96,115,-1,95,115,114,-1,96,97,117,-1,96,116,115,-1,96,117,116,-1,97,98,118,-1,97,118,117,-1,98,80,99,-1,98,99,118,-1,108,109,110,-1,108,110,111,-1,108,111,107,-1,127,128,143,-1,128,129,143,-1,137,138,148,-1,138,119,148,-1,119,120,149,-1,120,121,139,-1,120,139,149,-1,121,122,140,-1,121,140,139,-1,122,123,141,-1,122,141,140,-1,123,124,150,-1,123,150,141,-1,124,125,142,-1,124,142,150,-1,125,126,142,-1,126,127,151,-1,127,143,151,-1,129,130,152,-1,130,131,144,-1,130,144,152,-1,131,132,145,-1,131,145,144,-1,132,133,146,-1,132,146,145,-1,133,134,153,-1,133,153,146,-1,134,135,147,-1,134,147,153,-1,135,136,147,-1,136,137,154,-1};
			return value;
		}
		private int[] getIndexedFaceSet_10_17_coordIndex_2()
		{
			int[] value = {137,148,154,-1,119,149,155,-1,142,126,159,-1,126,151,159,-1,143,129,160,-1,129,152,160,-1,147,136,164,-1,136,154,164,-1,148,119,155,-1,149,139,156,-1,139,140,157,-1,139,157,156,-1,140,141,158,-1,140,158,157,-1,141,150,158,-1,150,142,166,-1,142,159,166,-1,151,143,167,-1,143,160,167,-1,152,144,161,-1,144,145,162,-1,144,162,161,-1,145,146,163,-1,145,163,162,-1,146,153,163,-1,153,147,169,-1,147,164,169,-1,154,148,170,-1,148,155,170,-1,156,157,173,-1,157,158,173,-1,158,150,165,-1,150,166,165,-1,159,151,175,-1,151,167,175,-1,152,161,177,-1,161,162,177,-1,163,153,168,-1,153,169,168,-1,164,154,179,-1,154,170,179,-1,155,149,171,-1,149,156,172,-1,149,172,171,-1,156,173,172,-1,173,158,181,-1,158,165,182,-1,158,182,181,-1,165,166,183,-1,165,183,182,-1,166,159,174,-1,166,174,183,-1,159,175,174,-1,160,152,176,-1,152,177,176,-1,177,162,186,-1,162,163,187,-1,162,187,186,-1,163,168,188,-1,163,188,187,-1,168,169,189,-1,168,189,188,-1,169,164,178,-1,169,178,189,-1,164,179,178,-1,155,171,180,-1,175,167,184,-1,167,160,185,-1,167,185,184,-1,160,176,185,-1,179,170,190,-1,170,155,180,-1,170,180,190,-1,180,171,192,-1,171,172,193,-1,171,193,192,-1,172,173,194,-1,172,194,193,-1,173,181,195,-1,173,195,194,-1,181,182,196,-1,181,196,195,-1,182,183,197,-1,182,197,196,-1,183,174,198,-1,183,198,197,-1,174,175,199,-1,174,199,198,-1,175,184,199,-1,185,176,202,-1,176,177,203,-1,176,203,202,-1,177,186,204,-1,177,204,203,-1,186,187,205,-1,186,205,204,-1,187,188,206,-1,187,206,205,-1,188,189,207,-1,188,207,206,-1,189,178,208,-1,189,208,207,-1,178,179,209,-1,178,209,208,-1,179,190,209,-1,180,192,191,-1,199,184,200,-1,184,185,201,-1,184,201,200,-1,185,202,201,-1,209,190,210,-1,190,180,191,-1,190,191,210,-1,191,192,120,-1,191,120,119,-1,192,193,121,-1,192,121,120,-1,193,194,122,-1,193,122,121,-1,194,195,123,-1,194,123,122,-1,195,196,124,-1,195,124,123,-1,196,197,125,-1,196,125,124,-1,197,198,126,-1,197,126,125,-1,198,199,127,-1,198,127,126,-1,199,200,128,-1,199,128,127,-1,200,201,129,-1,200,129,128,-1,201,202,130,-1,201,130,129,-1,202,203,131,-1,202,131,130,-1,203,204,132,-1,203,132,131,-1,204,205,133,-1,204,133,132,-1,205,206,134,-1,205,134,133,-1,206,207,135,-1,206,135,134,-1,207,208,136,-1,207,136,135,-1,208,209,137,-1,208,137,136,-1,209,210,138,-1,209,138,137,-1,210,191,119,-1,210,119,138,-1};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getCoordinate_11_17_point_1()
		{
			double[] value = {0.00500011,-2.82827,1.65294,-0.0752701,-2.82827,1.63705,-0.147683,-2.82827,1.59092,-0.242046,-2.82827,1.42858,-0.242046,-2.82827,1.2279,-0.20515,-2.82827,1.13738,-0.147683,-2.83768,0.246655,-0.0752701,-2.83768,0.200535,0.00500011,-2.83768,0.184643,0.0852702,-2.83768,0.200535,0.157683,-2.83768,0.246655,0.252046,-2.82827,1.2279,0.252046,-2.82827,1.42858,0.21515,-2.82827,1.51909,0.00500011,-2.76192,1.80419,-0.112661,-2.76192,1.78089,-0.218804,-2.76192,1.71329,-0.303039,-1.67947,1.57975,-0.357122,-1.67947,1.44708,-0.375758,-1.67947,1.3,-0.357122,-1.67947,1.15292,-0.303039,-1.67947,1.02025,-0.218804,-1.67947,0.91495,-0.112661,-2.14069,0.367305,0.00500011,-2.14069,0.34401,0.122661,-2.14069,0.367305,0.228804,-1.67947,0.91495,0.31304,-1.67947,1.02025,0.367122,-1.67947,1.15292,0.385758,-1.67947,1.3,0.367122,-1.67947,1.44708,0.31304,-1.67947,1.57975,0.228804,-2.76192,1.71329,0.122661,-2.76192,1.78089,0.00500011,-1.58914,1.91421,-0.146842,-1.58914,1.88415,-0.28382,-1.58914,1.79691,-0.392527,-1.58914,1.66103,-0.48637,-1.58914,1.3,-0.392527,-1.58914,0.938975,-0.28382,-1.58914,0.803091,-0.146842,-1.58914,-0.00892043,0.00500011,-1.58914,-0.0389822,0.156842,-1.58914,-0.00892055,0.29382,-1.58914,0.803091,0.472321,-1.58914,1.1102,0.472321,-1.58914,1.4898,0.29382,-1.58914,1.79691,0.156842,-1.58914,1.88415,0.00500011,-1.47728,2.03572,-0.47117,-1.47728,1.73245,-0.554772,-1.47728,1.52735,-0.583579,-1.47728,1.3,-0.554772,-1.47728,1.07265,-0.47117,-1.47728,0.867552,-0.340958,-1.47728,0.704787,-0.176881,-1.47728,-0.124484,0.0050,-1.47728,-0.160493,0.186881,-1.47728,-0.124485,0.350958,-1.47728,0.704787,0.481171,-1.47728,0.867552,0.564772,-1.47728,1.07265,0.593579,-1.47728,1.3,0.564772,-1.47728,1.52735,0.350958,-1.47728,1.89521,0.00500011,-1.34695,2.13717,-0.201959,-1.34695,2.09619,-0.536825,-1.34695,1.79207,-0.664733,-1.34695,1.3,-0.536825,-1.34695,0.807926,-0.388659,-1.34695,0.622718,-0.201959,-1.34695,-0.220962,0.0050,-1.34695,-0.261936,0.211959,-1.34695,-0.220962,0.398659,-1.34695,0.622718,0.641954,-1.34695,1.0413,0.641954,-1.34695,1.5587,0.546825,-1.34695,1.79207,0.398659,-1.34695,1.97728,0.211959,-1.34695,2.09619,0.00500011,-1.2017,2.21577,-0.221391,-1.2017,2.17095,-0.425622,-1.2017,2.04088,-0.587701,-1.2017,1.83828,-0.691762,-1.2017,1.58299,-0.727619,-1.2017,1.3,-0.691762,-1.2017,1.01701,-0.587701,-1.2017,0.761722,-0.425622,-1.2017,0.559124,-0.221392,-1.2017,-0.295722,0.0050,-1.2017,-0.340543,0.231392,-1.2017,-0.295722,0.435623,-1.2017,0.559124,0.597701,-1.2017,0.761722,0.701762,-1.2017,1.01701,0.737619,-1.2017,1.3,0.701762,-1.2017,1.58299,0.435622,-1.2017,2.04088,0.231392,-1.2017,2.17095,0.00500011,-1.04549,2.2694};
			return value;
		}
		private double[] getCoordinate_11_17_point_2()
		{
			double[] value = {-0.234649,-1.04549,2.22195,-0.450839,-1.04549,2.08426,-0.622409,-1.04549,1.8698,-0.732563,-1.04549,1.59956,-0.77052,-1.04549,1.3,-0.732563,-1.04549,1.00044,-0.622409,-1.04549,0.730201,-0.450839,-1.04549,0.515739,-0.234649,-1.04549,-0.346724,0.0050,-1.04549,-0.39417,0.244649,-1.04549,-0.346724,0.46084,-1.04549,0.515739,0.632409,-1.04549,0.730201,0.742564,-1.04549,1.00044,0.78052,-1.04549,1.3,0.742564,-1.04549,1.59956,0.632409,-1.04549,1.8698,0.460839,-1.04549,2.08426,0.244649,-1.04549,2.22195,0.741824,-1.01,1.71561,0.631034,-1.01,1.96651,0.458473,-1.01,2.16561,0.241034,-1.01,2.29345,7.53167E-7,-1.01,2.3375,-0.241033,-1.01,2.29345,-0.458472,-1.01,2.16562,-0.631033,-1.01,1.96651,-0.741824,-1.01,1.71562,-0.78,-1.01,1.4375,-0.741824,-1.01,1.15938,-0.631033,-1.01,0.908493,-0.458472,-1.01,0.709385,-0.241033,-1.01,0.581549,-3.40949E-8,-1.01,0.5375,0.241033,-1.01,0.581549,0.458472,-1.01,0.709385,0.631033,-1.01,0.908493,0.741824,-1.01,1.15938,0.78,-1.01,1.4375,0.44388,-0.92771,2.14244,0.233362,-0.92771,2.26621,7.29194E-7,-0.92771,2.30885,-0.443879,-0.92771,2.14244,-0.755172,-0.92771,1.4375,-0.443879,-0.92771,0.732561,-0.233361,-0.92771,0.608795,-3.30096E-8,-0.92771,0.566147,0.443879,-0.92771,0.732561,0.755172,-0.92771,1.4375,0.58768,-0.896738,1.93016,-0.224473,-0.896738,2.23465,-0.690859,-0.896738,1.69651,-0.58768,-0.896738,0.944837,0.224474,-0.896738,0.640355,0.690859,-0.896738,1.17849,0.656393,-0.876852,1.68359,0.405674,-0.876852,2.08176,0.213276,-0.876852,2.19488,6.6643E-7,-0.876852,2.23385,-0.558361,-0.876852,1.90558,-0.656393,-0.876852,1.19141,-0.405673,-0.876852,0.793237,-0.213275,-0.876852,0.680124,-3.01684E-8,-0.876852,0.641147,0.558361,-0.876852,0.969416,-0.200861,-0.87,2.15079,-0.38206,-0.87,2.04426,-0.65,-0.87,1.4375,0.200861,-0.87,0.724208,0.38206,-0.87,0.830737,0.65,-0.87,1.4375,0.493361,-0.876852,1.85109,0.358448,-0.876852,2.00676,0.188448,-0.876852,2.10671,-0.493361,-0.876852,1.85109,-0.57998,-0.876852,1.65494,-0.493361,-0.876852,1.02391,-0.358448,-0.876852,0.868237,0.493361,-0.876852,1.02391,0.579981,-0.876852,1.22006,0.545515,-0.896738,1.64202,5.53856E-7,-0.896738,2.09933,-0.177248,-0.896738,2.06694,-0.337146,-0.896738,1.97293,-0.573588,-0.896738,1.4375,-0.545514,-0.896738,1.23298,-0.177248,-0.896738,0.80806,-2.50723E-8,-0.896738,0.775668,0.177248,-0.896738,0.80806,0.337146,-0.896738,0.902067,0.573588,-0.896738,1.4375,0.500601,-0.966738,1.62518,0.425837,-0.966738,1.79449,0.309389,-0.966738,1.92885,0.162656,-0.966738,2.01512,5.08255E-7,-0.966738,2.04484,-0.162655,-0.966738,2.01512,-0.309388,-0.966738,1.92885,-0.425836,-0.966738,1.79449,-0.500601,-0.966738,1.62518};
			return value;
		}
		private double[] getCoordinate_11_17_point_3()
		{
			double[] value = {-0.526363,-0.966738,1.4375,-0.500601,-0.966738,1.24982,-0.425836,-0.966738,1.08051,-0.309388,-0.966738,0.94615,-0.162655,-0.966738,0.859884,-2.3008E-8,-0.966738,0.830159,0.162655,-0.966738,0.859884,0.309388,-0.966738,0.94615,0.425836,-0.966738,1.08051,0.500601,-0.966738,1.24982,0.526363,-0.966738,1.4375};
			return value;
		}

		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=10, element #17, 1612 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_10_17_coordIndex()
		{
			MFInt32 IndexedFaceSet_10_17_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_10_17_coordIndex_1()))
				.append(new MFInt32(getIndexedFaceSet_10_17_coordIndex_2()));
			return IndexedFaceSet_10_17_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=11, element #17, 633 total numbers made up of 211 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_11_17_point()
		{
			MFVec3f Coordinate_11_17_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_11_17_point_1()))
				.append(new MFVec3f(getCoordinate_11_17_point_2()))
				.append(new MFVec3f(getCoordinate_11_17_point_3()));
			return Coordinate_11_17_point;
		}

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return Toilet model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new Toilet().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"Savage.Buildings.HouseSeksitSiripala.Toilet\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("Savage.Buildings.HouseSeksitSiripala.Toilet self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // Buildings/HouseSeksitSiripala/Toilet_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "Buildings/HouseSeksitSiripala/Toilet_JavaExport.x3d"; 
                String filenameX3DV = "Buildings/HouseSeksitSiripala/Toilet_JavaExport.x3dv"; 
                String filenameJSON = "Buildings/HouseSeksitSiripala/Toilet_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
