hellovector.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>hellovector :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/jme3/beginner/hellovector.html">
  8. <link rel="prev" href="../scenegraph_for_dummies.html">
  9. <link rel="next" href="../terminology.html">
  10. <meta name="generator" content="Antora 2.3.3">
  11. <link rel="stylesheet" href="../../../_/css/site.css">
  12. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  13. <meta property="og:description" content="hellovector">
  14. <meta property="og:title" content="jMonkeyEngine Docs">
  15. <link rel="stylesheet" href="../../../_/css/site-extra.css">
  16. <link rel="stylesheet" href="../../../_/css/vendor/docsearch.min.css">
  17. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css -->
  18. <link rel="icon" href="../../../_/img/favicon.ico" type="image/x-icon">
  19. </head>
  20. <body class="article">
  21. <header class="header">
  22. <nav class="navbar">
  23. <div class="navbar-brand">
  24. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  25. <img alt="" src="../../../_/img/jMonkeyDocLogo.png" height="32" type="image/x-icon">
  26. </a>
  27. <div class="navbar-item hide-for-print">
  28. <input type="text" placeholder="Search docs..." id="search-input"/>
  29. </div>
  30. <button class="navbar-burger" data-target="topbar-nav">
  31. <span></span>
  32. <span></span>
  33. <span></span>
  34. </button>
  35. </div>
  36. <div id="topbar-nav" class="navbar-menu">
  37. <div class="navbar-end">
  38. <div class="navbar-item theme-switch-wrapper">
  39. <label class="theme-switch" for="checkbox">
  40. <input type="checkbox" id="checkbox" />
  41. <div class="slider round"></div>
  42. </label>
  43. </div>
  44. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  45. </div>
  46. </div>
  47. </nav>
  48. </header>
  49. <div class="body">
  50. <div class="nav-container" data-component="docs" data-version="master">
  51. <aside class="nav">
  52. <div class="panels">
  53. <div class="nav-panel-menu is-active" data-panel="menu">
  54. <nav class="nav-menu">
  55. <h3 class="title"><a href="../../documentation.html">Docs</a></h3>
  56. <ul class="nav-list">
  57. <li class="nav-item" data-depth="0">
  58. <ul class="nav-list">
  59. <li class="nav-item" data-depth="1">
  60. <a class="nav-link" href="../../documentation.html">Getting Started</a>
  61. </li>
  62. <li class="nav-item" data-depth="1">
  63. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.3.2-stable">JavaDoc</a>
  64. </li>
  65. <li class="nav-item" data-depth="1">
  66. <button class="nav-item-toggle"></button>
  67. <a class="nav-link" href="../../jme3.html">jMonkeyEngine 3</a>
  68. <ul class="nav-list">
  69. <li class="nav-item" data-depth="2">
  70. <button class="nav-item-toggle"></button>
  71. <span class="nav-text">Beginner Tutorials</span>
  72. <ul class="nav-list">
  73. <li class="nav-item" data-depth="3">
  74. <a class="nav-link" href="hello_simpleapplication.html">Hello SimpleApplication</a>
  75. </li>
  76. <li class="nav-item" data-depth="3">
  77. <a class="nav-link" href="hello_node.html">Hello Node</a>
  78. </li>
  79. <li class="nav-item" data-depth="3">
  80. <a class="nav-link" href="hello_asset.html">Hello Asset</a>
  81. </li>
  82. <li class="nav-item" data-depth="3">
  83. <a class="nav-link" href="hello_main_event_loop.html">Hello Main Event Loop</a>
  84. </li>
  85. <li class="nav-item" data-depth="3">
  86. <a class="nav-link" href="hello_input_system.html">Hello Input System</a>
  87. </li>
  88. <li class="nav-item" data-depth="3">
  89. <a class="nav-link" href="hello_material.html">Hello Material</a>
  90. </li>
  91. <li class="nav-item" data-depth="3">
  92. <a class="nav-link" href="hello_animation.html">Hello Animation</a>
  93. </li>
  94. <li class="nav-item" data-depth="3">
  95. <a class="nav-link" href="hello_picking.html">Hello Picking</a>
  96. </li>
  97. <li class="nav-item" data-depth="3">
  98. <a class="nav-link" href="hello_collision.html">Hello Collision</a>
  99. </li>
  100. <li class="nav-item" data-depth="3">
  101. <a class="nav-link" href="hello_terrain.html">Hello Terrain</a>
  102. </li>
  103. <li class="nav-item" data-depth="3">
  104. <a class="nav-link" href="hello_audio.html">Hello Audio</a>
  105. </li>
  106. <li class="nav-item" data-depth="3">
  107. <a class="nav-link" href="hello_effects.html">Hello Effects</a>
  108. </li>
  109. <li class="nav-item" data-depth="3">
  110. <a class="nav-link" href="hello_physics.html">Hello Physics</a>
  111. </li>
  112. </ul>
  113. </li>
  114. <li class="nav-item" data-depth="2">
  115. <button class="nav-item-toggle"></button>
  116. <span class="nav-text">Intermediate Tutorials</span>
  117. <ul class="nav-list">
  118. <li class="nav-item" data-depth="3">
  119. <button class="nav-item-toggle"></button>
  120. <span class="nav-text">Concepts</span>
  121. <ul class="nav-list">
  122. <li class="nav-item" data-depth="4">
  123. <a class="nav-link" href="../intermediate/best_practices.html">Best Practices</a>
  124. </li>
  125. <li class="nav-item" data-depth="4">
  126. <a class="nav-link" href="../intermediate/simpleapplication.html">Simple Application</a>
  127. </li>
  128. <li class="nav-item" data-depth="4">
  129. <a class="nav-link" href="../features.html">Features</a>
  130. </li>
  131. <li class="nav-item" data-depth="4">
  132. <a class="nav-link" href="../intermediate/optimization.html">Optimization</a>
  133. </li>
  134. <li class="nav-item" data-depth="4">
  135. <a class="nav-link" href="../faq.html">FAQ</a>
  136. </li>
  137. </ul>
  138. </li>
  139. <li class="nav-item" data-depth="3">
  140. <button class="nav-item-toggle"></button>
  141. <span class="nav-text">Math Concepts</span>
  142. <ul class="nav-list">
  143. <li class="nav-item" data-depth="4">
  144. <a class="nav-link" href="../math_for_dummies.html">Math For Dummies</a>
  145. </li>
  146. <li class="nav-item" data-depth="4">
  147. <a class="nav-link" href="../intermediate/math.html">Math</a>
  148. </li>
  149. <li class="nav-item" data-depth="4">
  150. <a class="nav-link" href="../math.html">More Math</a>
  151. </li>
  152. <li class="nav-item" data-depth="4">
  153. <a class="nav-link" href="../rotate.html">Rotate</a>
  154. </li>
  155. <li class="nav-item" data-depth="4">
  156. <a class="nav-link" href="../math_video_tutorials.html">Math Video Tutorials</a>
  157. </li>
  158. </ul>
  159. </li>
  160. <li class="nav-item" data-depth="3">
  161. <button class="nav-item-toggle"></button>
  162. <span class="nav-text">3D Graphics Concepts</span>
  163. <ul class="nav-list">
  164. <li class="nav-item" data-depth="4">
  165. <a class="nav-link" href="../intermediate/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  166. </li>
  167. <li class="nav-item" data-depth="4">
  168. <a class="nav-link" href="../scenegraph_for_dummies.html">Scenegraph for Dummies</a>
  169. </li>
  170. <li class="nav-item is-current-page" data-depth="4">
  171. <a class="nav-link" href="hellovector.html">Hello Vector</a>
  172. </li>
  173. <li class="nav-item" data-depth="4">
  174. <a class="nav-link" href="../terminology.html">Terminology</a>
  175. </li>
  176. <li class="nav-item" data-depth="4">
  177. <a class="nav-link" href="../intermediate/how_to_use_materials.html">How to Use Materials</a>
  178. </li>
  179. <li class="nav-item" data-depth="4">
  180. <a class="nav-link" href="../intermediate/transparency_sorting.html">Transparency and Sorting</a>
  181. </li>
  182. <li class="nav-item" data-depth="4">
  183. <a class="nav-link" href="../external/blender.html">Importing from Blender</a>
  184. </li>
  185. <li class="nav-item" data-depth="4">
  186. <a class="nav-link" href="../external/3dsmax.html">Importing from 3DS Max</a>
  187. </li>
  188. </ul>
  189. </li>
  190. </ul>
  191. </li>
  192. </ul>
  193. </li>
  194. <li class="nav-item" data-depth="1">
  195. <a class="nav-link" href="../../logo.html">Logo Usage</a>
  196. </li>
  197. <li class="nav-item" data-depth="1">
  198. <a class="nav-link" href="../../bsd_license.html">License</a>
  199. </li>
  200. <li class="nav-item" data-depth="1">
  201. <a class="nav-link" href="../../github_tips.html">Github Tips</a>
  202. </li>
  203. </ul>
  204. </li>
  205. <li class="nav-item" data-depth="0">
  206. <button class="nav-item-toggle"></button>
  207. <span class="nav-text">SDK</span>
  208. <ul class="nav-list">
  209. <li class="nav-item" data-depth="1">
  210. <a class="nav-link" href="../../sdk.html">jMonkeyEngine SDK</a>
  211. </li>
  212. </ul>
  213. </li>
  214. </ul>
  215. </nav>
  216. </div>
  217. <div class="nav-panel-explore" data-panel="explore">
  218. <div class="context">
  219. <span class="title">Docs</span>
  220. <span class="version">master</span>
  221. </div>
  222. <ul class="components">
  223. <li class="component is-current">
  224. <span class="title">Docs</span>
  225. <ul class="versions">
  226. <li class="version is-current is-latest">
  227. <a href="../../documentation.html">master</a>
  228. </li>
  229. </ul>
  230. </li>
  231. <li class="component">
  232. <span class="title">Wiki UI</span>
  233. <ul class="versions">
  234. <li class="version is-latest">
  235. <a href="../../../wiki-ui/index.html">master</a>
  236. </li>
  237. </ul>
  238. </li>
  239. </ul>
  240. </div>
  241. </div>
  242. </aside>
  243. </div>
  244. <main class="article">
  245. <div class="toolbar" role="navigation">
  246. <button class="nav-toggle"></button>
  247. <nav class="breadcrumbs" aria-label="breadcrumbs">
  248. <ul>
  249. <li><a href="../../documentation.html">Docs</a></li>
  250. <li><a href="../../jme3.html">jMonkeyEngine 3</a></li>
  251. <li>Intermediate Tutorials</li>
  252. <li>3D Graphics Concepts</li>
  253. <li><a href="hellovector.html">Hello Vector</a></li>
  254. </ul>
  255. </nav>
  256. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/docs/modules/ROOT/pages/jme3/beginner/hellovector.adoc">Edit this Page</a></div>
  257. </div>
  258. <div class="content">
  259. <article class="doc">
  260. <h1 class="page">hellovector</h1>
  261. <div class="paragraph">
  262. <p><span class="image"><img src="../../_images/jme3/beginner/hellovectorsumm2.png" alt="hellovectorsumm2.png" width="" height=""></span></p>
  263. </div>
  264. <div class="paragraph">
  265. <p>HelloVectorSumm.java</p>
  266. </div>
  267. <div class="listingblock">
  268. <div class="content">
  269. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">package org.jmonkey.chapter2.hellovector;
  270. import com.jme3.app.SimpleApplication;
  271. import com.jme3.material.Material;
  272. import com.jme3.math.ColorRGBA;
  273. import com.jme3.math.Vector3f;
  274. import com.jme3.renderer.RenderManager;
  275. import com.jme3.scene.Geometry;
  276. import com.jme3.scene.Node;
  277. import com.jme3.scene.shape.Box;
  278. import org.jmonkey.utils.Debug;
  279. import org.jmonkey.utils.MaterialUtils;
  280. import org.jmonkey.utils.SpatialUtils;
  281. /**
  282. Example Vector Summ
  283. @author Alex Cham aka Jcrypto
  284. */
  285. public class HelloVectorSumm extends SimpleApplication
  286. {
  287. private Node vctrNode = SpatialUtils.makeNode("vectorNode");
  288. //
  289. private Vector3f vctrNodeLoc = new Vector3f(64.0f, 64.0f, 64.0f);
  290. private Vector3f camLocVctr = new Vector3f(512.0f, 64.0f, 0.0f);
  291. //
  292. private Vector3f vctrNodeSpatLoc = new Vector3f(64.0f, 128.0f, -32.0f);
  293. //
  294. private Vector3f vctrSumm = null;
  295. private Vector3f scale = new Vector3f(8, 8, 8);
  296. public static void main(String[] args)
  297. {
  298. HelloVectorSumm app = new HelloVectorSumm();
  299. //app.setShowSettings(false);
  300. app.start();
  301. }
  302. @Override
  303. public void simpleInitApp()
  304. {
  305. cam.setLocation(camLocVctr);
  306. cam.lookAt(Vector3f.ZERO, cam.getUp());
  307. flyCam.setMoveSpeed(100.0f);
  308. //
  309. Debug.showNodeAxes(assetManager, rootNode, 128);
  310. Debug.attachWireFrameDebugGrid(assetManager, rootNode, Vector3f.ZERO, 256, ColorRGBA.DarkGray);
  311. //
  312. Box box = new Box(1, 1, 1);
  313. //
  314. Material mat = MaterialUtils.makeMaterial(assetManager, "Common/MatDefs/Misc/Unshaded.j3md", ColorRGBA.Blue);
  315. Geometry geom = SpatialUtils.makeGeometry(vctrNodeSpatLoc, scale, box, mat, "box");
  316. vctrNode.attachChild(geom);
  317. vctrNode.setLocalTranslation(vctrNodeLoc);
  318. vctrSumm = vctrNodeLoc.add(vctrNodeSpatLoc);
  319. //
  320. Debug.showNodeAxes(assetManager, vctrNode, 4.0f);
  321. Debug.showVector3fArrow(assetManager, rootNode, vctrNodeLoc, ColorRGBA.Red, "vctrNodeLoc");
  322. Debug.showVector3fArrow(assetManager, vctrNode, vctrNodeSpatLoc, ColorRGBA.Green, "vctrNodeSpatLoc");
  323. Debug.showVector3fArrow(assetManager, rootNode, vctrSumm, ColorRGBA.Blue, "vctrSumm");
  324. //
  325. rootNode.attachChild(vctrNode);
  326. }
  327. @Override
  328. public void simpleUpdate(float tpf)
  329. {
  330. //n.move(tpf * 10, 0, 0);
  331. }
  332. @Override
  333. public void simpleRender(RenderManager rm)
  334. {
  335. //TODO: add render code
  336. }
  337. }</code></pre>
  338. </div>
  339. </div>
  340. <div class="paragraph">
  341. <p>—</p>
  342. </div>
  343. <div class="listingblock">
  344. <div class="content">
  345. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">package org.jmonkey.utils;
  346. import com.jme3.asset.AssetManager;
  347. import com.jme3.material.Material;
  348. import com.jme3.math.ColorRGBA;
  349. /**
  350. * Example Vector Summ
  351. * @author Alex Cham aka Jcrypto
  352. */
  353. public class MaterialUtils
  354. {
  355. public MaterialUtils()
  356. {
  357. }
  358. //"Common/MatDefs/Misc/Unshaded.j3md"
  359. public static Material makeMaterial(AssetManager am, String name, ColorRGBA color)
  360. {
  361. Material mat = new Material(am, name);
  362. mat.setColor("Color", color);
  363. return mat;
  364. }
  365. }</code></pre>
  366. </div>
  367. </div>
  368. <div class="paragraph">
  369. <p>—</p>
  370. </div>
  371. <div class="listingblock">
  372. <div class="content">
  373. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">package org.jmonkey.utils;
  374. import com.jme3.material.Material;
  375. import com.jme3.math.Vector3f;
  376. import com.jme3.scene.Geometry;
  377. import com.jme3.scene.Mesh;
  378. import com.jme3.scene.Node;
  379. /**
  380. * Example Vector Summ
  381. * @author Alex Cham aka Jcrypto
  382. */
  383. public class SpatialUtils
  384. {
  385. //
  386. public static Node makeNode(String name)
  387. {
  388. Node n = new Node(name);
  389. return n;
  390. }
  391. //
  392. public static Geometry makeGeometry(Mesh mesh, Material mat, String name)
  393. {
  394. Geometry geom = new Geometry(name, mesh);
  395. geom.setMaterial(mat);
  396. return geom;
  397. }
  398. //
  399. public static Geometry makeGeometry(Vector3f loc, Vector3f scl, Mesh mesh, Material mat, String name)
  400. {
  401. Geometry geom = new Geometry(name, mesh);
  402. geom.setMaterial(mat);
  403. geom.setLocalTranslation(loc);
  404. geom.setLocalScale(scl);
  405. return geom;
  406. }
  407. }</code></pre>
  408. </div>
  409. </div>
  410. <div class="paragraph">
  411. <p>—
  412. Debug.java</p>
  413. </div>
  414. <div class="listingblock">
  415. <div class="content">
  416. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">package org.jmonkey.utils;
  417. import com.jme3.animation.AnimControl;
  418. import com.jme3.asset.AssetManager;
  419. import com.jme3.material.Material;
  420. import com.jme3.math.ColorRGBA;
  421. import com.jme3.math.Vector3f;
  422. import com.jme3.scene.Geometry;
  423. import com.jme3.scene.Node;
  424. import com.jme3.scene.debug.Arrow;
  425. import com.jme3.scene.debug.Grid;
  426. import com.jme3.scene.debug.SkeletonDebugger;
  427. import com.jme3.scene.shape.Line;
  428. import static org.jmonkey.utils.SpatialUtils.makeGeometry;
  429. /**
  430. Example Vector Summ
  431. @author Alex Cham aka Jcrypto
  432. */
  433. public class Debug
  434. {
  435. public static void showNodeAxes(AssetManager am, Node n, float axisLen)
  436. {
  437. Vector3f v = new Vector3f(axisLen, 0, 0);
  438. Arrow a = new Arrow(v);
  439. Material mat = new Material(am, "Common/MatDefs/Misc/Unshaded.j3md");
  440. mat.setColor("Color", ColorRGBA.Red);
  441. Geometry geom = new Geometry(n.getName() + "XAxis", a);
  442. geom.setMaterial(mat);
  443. n.attachChild(geom);
  444. //
  445. v = new Vector3f(0, axisLen, 0);
  446. a = new Arrow(v);
  447. mat = new Material(am, "Common/MatDefs/Misc/Unshaded.j3md");
  448. mat.setColor("Color", ColorRGBA.Green);
  449. geom = new Geometry(n.getName() + "YAxis", a);
  450. geom.setMaterial(mat);
  451. n.attachChild(geom);
  452. //
  453. v = new Vector3f(0, 0, axisLen);
  454. a = new Arrow(v);
  455. mat = new Material(am, "Common/MatDefs/Misc/Unshaded.j3md");
  456. mat.setColor("Color", ColorRGBA.Blue);
  457. geom = new Geometry(n.getName() + "ZAxis", a);
  458. geom.setMaterial(mat);
  459. n.attachChild(geom);
  460. }
  461. //
  462. public static void showVector3fArrow(AssetManager am, Node n, Vector3f v, ColorRGBA color, String name)
  463. {
  464. Arrow a = new Arrow(v);
  465. Material mat = MaterialUtils.makeMaterial(am, "Common/MatDefs/Misc/Unshaded.j3md", color);
  466. Geometry geom = makeGeometry(a, mat, name);
  467. n.attachChild(geom);
  468. }
  469. public static void showVector3fLine(AssetManager am, Node n, Vector3f v, ColorRGBA color, String name)
  470. {
  471. Line l = new Line(v.subtract(v), v);
  472. Material mat = MaterialUtils.makeMaterial(am, "Common/MatDefs/Misc/Unshaded.j3md", color);
  473. Geometry geom = makeGeometry(l, mat, name);
  474. n.attachChild(geom);
  475. }
  476. //Skeleton Debugger
  477. public static void attachSkeleton(AssetManager am, Node player, AnimControl control)
  478. {
  479. SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton", control.getSkeleton());
  480. Material mat2 = new Material(am, "Common/MatDefs/Misc/Unshaded.j3md");
  481. mat2.setColor("Color", ColorRGBA.Yellow);
  482. mat2.getAdditionalRenderState().setDepthTest(false);
  483. skeletonDebug.setMaterial(mat2);
  484. player.attachChild(skeletonDebug);
  485. }
  486. ///
  487. public static void attachWireFrameDebugGrid(AssetManager assetManager, Node n, Vector3f pos, Integer size, ColorRGBA color)
  488. {
  489. Geometry g = new Geometry("wireFrameDebugGrid", new Grid(size, size, 1.0f));//1WU
  490. Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
  491. mat.getAdditionalRenderState().setWireframe(true);
  492. mat.setColor("Color", color);
  493. g.setMaterial(mat);
  494. g.center().move(pos);
  495. n.attachChild(g);
  496. }
  497. }</code></pre>
  498. </div>
  499. </div>
  500. <nav class="pagination">
  501. <span class="prev"><a href="../scenegraph_for_dummies.html">Scenegraph for Dummies</a></span>
  502. <span class="next"><a href="../terminology.html">Terminology</a></span>
  503. </nav>
  504. </article>
  505. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  506. <div class="toc-menu"></div>
  507. </aside>
  508. </div>
  509. </main>
  510. </div>
  511. <footer class="footer">
  512. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  513. </footer>
  514. <script src="../../../_/js/vendor/docsearch.min.js"></script>
  515. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  516. <script>
  517. var search = docsearch({
  518. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  519. indexName: 'jmonkeyengine',
  520. inputSelector: '#search-input',
  521. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  522. algoliaOptions: { hitsPerPage: 10 }
  523. }).autocomplete
  524. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  525. function focusSearchInput () { document.querySelector('#search-input').focus() }
  526. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  527. </script>
  528. <script src="../../../_/js/site.js"></script>
  529. <script async src="../../../_/js/vendor/highlight.js"></script>
  530. </body>
  531. </html>