UNPKG

@aidinabedi/playcanvas

Version:

PlayCanvas WebGL game engine

730 lines (665 loc) 40.5 kB
<!doctype html> <html lang="en"> <head> <title>pc.ScriptType | PlayCanvas API Reference</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="icon" type="image/png" href="images/playcanvas-favicon.png"> <link href="styles/styles.css" rel="stylesheet"> <link href="styles/playcanvas-theme.css" rel="stylesheet"> <script src="scripts/interface.js"></script> <script src="scripts/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> </head> <body> <header> <nav class="header-width"> <a href="/" class="header-title"><img src="images/playcanvas-manual.png"></a> <ul class="header-menu"> <li class="user-manual"><a href="https://developer.playcanvas.com/en/user-manual/">User Manual</a></li> <li class="tutorials"><a href="https://developer.playcanvas.com/en/tutorials">Tutorials</a></li> <li class="forum"><a href="https://forum.playcanvas.com/" target="_blank">Forum</a></li> <li class="api active"><a href="/api/">API Reference</a></li> </ul> </nav> <div class="header-content header-page header-width"> <h1><span class="font-icon">&#58195;</span>API Reference</h1> <input id="search" class="search" type="text" placeholder="Search"></input> </div> </header> <div class="container content-width"> <nav class="sidebar"> <div class="sidebarFilter"> <input id="filter-input" type="text" placeholder="Filter"> </div> <ul> <li id="nav-pc"><a href="pc.html">pc</a></li> <li id="nav-pc.callbacks"><a href="pc.callbacks.html">pc.callbacks</a></li> <li id="nav-pc.guid"><a href="pc.guid.html">pc.guid</a></li> <li id="nav-pc.math"><a href="pc.math.html">pc.math</a></li> <li id="nav-pc.path"><a href="pc.path.html">pc.path</a></li> <li id="nav-pc.platform"><a href="pc.platform.html">pc.platform</a></li> <li id="nav-pc.script"><a href="pc.script.html">pc.script</a></li> <li id="nav-pc.string"><a href="pc.string.html">pc.string</a></li> <li id="nav-pc.Animation"><a href="pc.Animation.html">Animation</a></li> <li id="nav-pc.AnimationComponent"><a href="pc.AnimationComponent.html">AnimationComponent</a></li> <li id="nav-pc.AnimationComponentSystem"><a href="pc.AnimationComponentSystem.html">AnimationComponentSystem</a></li> <li id="nav-pc.AnimationHandler"><a href="pc.AnimationHandler.html">AnimationHandler</a></li> <li id="nav-pc.AnimCache"><a href="pc.AnimCache.html">AnimCache</a></li> <li id="nav-pc.AnimClip"><a href="pc.AnimClip.html">AnimClip</a></li> <li id="nav-pc.AnimController"><a href="pc.AnimController.html">AnimController</a></li> <li id="nav-pc.AnimCurve"><a href="pc.AnimCurve.html">AnimCurve</a></li> <li id="nav-pc.AnimData"><a href="pc.AnimData.html">AnimData</a></li> <li id="nav-pc.AnimSnapshot"><a href="pc.AnimSnapshot.html">AnimSnapshot</a></li> <li id="nav-pc.AnimTarget"><a href="pc.AnimTarget.html">AnimTarget</a></li> <li id="nav-pc.AnimTrack"><a href="pc.AnimTrack.html">AnimTrack</a></li> <li id="nav-pc.Application"><a href="pc.Application.html">Application</a></li> <li id="nav-pc.Asset"><a href="pc.Asset.html">Asset</a></li> <li id="nav-pc.AssetReference"><a href="pc.AssetReference.html">AssetReference</a></li> <li id="nav-pc.AssetRegistry"><a href="pc.AssetRegistry.html">AssetRegistry</a></li> <li id="nav-pc.AudioHandler"><a href="pc.AudioHandler.html">AudioHandler</a></li> <li id="nav-pc.AudioListenerComponent"><a href="pc.AudioListenerComponent.html">AudioListenerComponent</a></li> <li id="nav-pc.AudioListenerComponentSystem"><a href="pc.AudioListenerComponentSystem.html">AudioListenerComponentSystem</a></li> <li id="nav-pc.BasicMaterial"><a href="pc.BasicMaterial.html">BasicMaterial</a></li> <li id="nav-pc.Batch"><a href="pc.Batch.html">Batch</a></li> <li id="nav-pc.BatchGroup"><a href="pc.BatchGroup.html">BatchGroup</a></li> <li id="nav-pc.BatchManager"><a href="pc.BatchManager.html">BatchManager</a></li> <li id="nav-pc.BoundingBox"><a href="pc.BoundingBox.html">BoundingBox</a></li> <li id="nav-pc.BoundingSphere"><a href="pc.BoundingSphere.html">BoundingSphere</a></li> <li id="nav-pc.ButtonComponent"><a href="pc.ButtonComponent.html">ButtonComponent</a></li> <li id="nav-pc.ButtonComponentSystem"><a href="pc.ButtonComponentSystem.html">ButtonComponentSystem</a></li> <li id="nav-pc.CameraComponent"><a href="pc.CameraComponent.html">CameraComponent</a></li> <li id="nav-pc.CameraComponentSystem"><a href="pc.CameraComponentSystem.html">CameraComponentSystem</a></li> <li id="nav-pc.CollisionComponent"><a href="pc.CollisionComponent.html">CollisionComponent</a></li> <li id="nav-pc.CollisionComponentSystem"><a href="pc.CollisionComponentSystem.html">CollisionComponentSystem</a></li> <li id="nav-pc.Color"><a href="pc.Color.html">Color</a></li> <li id="nav-pc.Component"><a href="pc.Component.html">Component</a></li> <li id="nav-pc.ComponentSystem"><a href="pc.ComponentSystem.html">ComponentSystem</a></li> <li id="nav-pc.ComponentSystemRegistry"><a href="pc.ComponentSystemRegistry.html">ComponentSystemRegistry</a></li> <li id="nav-pc.ContactPoint"><a href="pc.ContactPoint.html">ContactPoint</a></li> <li id="nav-pc.ContactResult"><a href="pc.ContactResult.html">ContactResult</a></li> <li id="nav-pc.ContainerHandler"><a href="pc.ContainerHandler.html">ContainerHandler</a></li> <li id="nav-pc.ContainerResource"><a href="pc.ContainerResource.html">ContainerResource</a></li> <li id="nav-pc.Controller"><a href="pc.Controller.html">Controller</a></li> <li id="nav-pc.CubemapHandler"><a href="pc.CubemapHandler.html">CubemapHandler</a></li> <li id="nav-pc.Curve"><a href="pc.Curve.html">Curve</a></li> <li id="nav-pc.CurveSet"><a href="pc.CurveSet.html">CurveSet</a></li> <li id="nav-pc.ElementComponent"><a href="pc.ElementComponent.html">ElementComponent</a></li> <li id="nav-pc.ElementComponentSystem"><a href="pc.ElementComponentSystem.html">ElementComponentSystem</a></li> <li id="nav-pc.ElementDragHelper"><a href="pc.ElementDragHelper.html">ElementDragHelper</a></li> <li id="nav-pc.ElementInput"><a href="pc.ElementInput.html">ElementInput</a></li> <li id="nav-pc.ElementInputEvent"><a href="pc.ElementInputEvent.html">ElementInputEvent</a></li> <li id="nav-pc.ElementMouseEvent"><a href="pc.ElementMouseEvent.html">ElementMouseEvent</a></li> <li id="nav-pc.ElementTouchEvent"><a href="pc.ElementTouchEvent.html">ElementTouchEvent</a></li> <li id="nav-pc.Entity"><a href="pc.Entity.html">Entity</a></li> <li id="nav-pc.EventHandler"><a href="pc.EventHandler.html">EventHandler</a></li> <li id="nav-pc.Font"><a href="pc.Font.html">Font</a></li> <li id="nav-pc.FontHandler"><a href="pc.FontHandler.html">FontHandler</a></li> <li id="nav-pc.ForwardRenderer"><a href="pc.ForwardRenderer.html">ForwardRenderer</a></li> <li id="nav-pc.Frustum"><a href="pc.Frustum.html">Frustum</a></li> <li id="nav-pc.GamePads"><a href="pc.GamePads.html">GamePads</a></li> <li id="nav-pc.GraphicsDevice"><a href="pc.GraphicsDevice.html">GraphicsDevice</a></li> <li id="nav-pc.GraphNode"><a href="pc.GraphNode.html">GraphNode</a></li> <li id="nav-pc.Http"><a href="pc.Http.html">Http</a></li> <li id="nav-pc.I18n"><a href="pc.I18n.html">I18n</a></li> <li id="nav-pc.IndexBuffer"><a href="pc.IndexBuffer.html">IndexBuffer</a></li> <li id="nav-pc.Keyboard"><a href="pc.Keyboard.html">Keyboard</a></li> <li id="nav-pc.KeyboardEvent"><a href="pc.KeyboardEvent.html">KeyboardEvent</a></li> <li id="nav-pc.Layer"><a href="pc.Layer.html">Layer</a></li> <li id="nav-pc.LayerComposition"><a href="pc.LayerComposition.html">LayerComposition</a></li> <li id="nav-pc.LayoutChildComponent"><a href="pc.LayoutChildComponent.html">LayoutChildComponent</a></li> <li id="nav-pc.LayoutChildComponentSystem"><a href="pc.LayoutChildComponentSystem.html">LayoutChildComponentSystem</a></li> <li id="nav-pc.LayoutGroupComponent"><a href="pc.LayoutGroupComponent.html">LayoutGroupComponent</a></li> <li id="nav-pc.LayoutGroupComponentSystem"><a href="pc.LayoutGroupComponentSystem.html">LayoutGroupComponentSystem</a></li> <li id="nav-pc.LightComponent"><a href="pc.LightComponent.html">LightComponent</a></li> <li id="nav-pc.LightComponentSystem"><a href="pc.LightComponentSystem.html">LightComponentSystem</a></li> <li id="nav-pc.Lightmapper"><a href="pc.Lightmapper.html">Lightmapper</a></li> <li id="nav-pc.Mat3"><a href="pc.Mat3.html">Mat3</a></li> <li id="nav-pc.Mat4"><a href="pc.Mat4.html">Mat4</a></li> <li id="nav-pc.Material"><a href="pc.Material.html">Material</a></li> <li id="nav-pc.MaterialHandler"><a href="pc.MaterialHandler.html">MaterialHandler</a></li> <li id="nav-pc.Mesh"><a href="pc.Mesh.html">Mesh</a></li> <li id="nav-pc.MeshInstance"><a href="pc.MeshInstance.html">MeshInstance</a></li> <li id="nav-pc.Model"><a href="pc.Model.html">Model</a></li> <li id="nav-pc.ModelComponent"><a href="pc.ModelComponent.html">ModelComponent</a></li> <li id="nav-pc.ModelComponentSystem"><a href="pc.ModelComponentSystem.html">ModelComponentSystem</a></li> <li id="nav-pc.ModelHandler"><a href="pc.ModelHandler.html">ModelHandler</a></li> <li id="nav-pc.Morph"><a href="pc.Morph.html">Morph</a></li> <li id="nav-pc.MorphInstance"><a href="pc.MorphInstance.html">MorphInstance</a></li> <li id="nav-pc.MorphTarget"><a href="pc.MorphTarget.html">MorphTarget</a></li> <li id="nav-pc.Mouse"><a href="pc.Mouse.html">Mouse</a></li> <li id="nav-pc.MouseEvent"><a href="pc.MouseEvent.html">MouseEvent</a></li> <li id="nav-pc.Node"><a href="pc.Node.html">Node</a></li> <li id="nav-pc.OrientedBox"><a href="pc.OrientedBox.html">OrientedBox</a></li> <li id="nav-pc.ParticleSystemComponent"><a href="pc.ParticleSystemComponent.html">ParticleSystemComponent</a></li> <li id="nav-pc.ParticleSystemComponentSystem"><a href="pc.ParticleSystemComponentSystem.html">ParticleSystemComponentSystem</a></li> <li id="nav-pc.Picker"><a href="pc.Picker.html">Picker</a></li> <li id="nav-pc.PostEffect"><a href="pc.PostEffect.html">PostEffect</a></li> <li id="nav-pc.PostEffectQueue"><a href="pc.PostEffectQueue.html">PostEffectQueue</a></li> <li id="nav-pc.Quat"><a href="pc.Quat.html">Quat</a></li> <li id="nav-pc.Ray"><a href="pc.Ray.html">Ray</a></li> <li id="nav-pc.RaycastResult"><a href="pc.RaycastResult.html">RaycastResult</a></li> <li id="nav-pc.RenderTarget"><a href="pc.RenderTarget.html">RenderTarget</a></li> <li id="nav-pc.ResourceHandler"><a href="pc.ResourceHandler.html">ResourceHandler</a></li> <li id="nav-pc.ResourceLoader"><a href="pc.ResourceLoader.html">ResourceLoader</a></li> <li id="nav-pc.RigidBodyComponent"><a href="pc.RigidBodyComponent.html">RigidBodyComponent</a></li> <li id="nav-pc.RigidBodyComponentSystem"><a href="pc.RigidBodyComponentSystem.html">RigidBodyComponentSystem</a></li> <li id="nav-pc.Scene"><a href="pc.Scene.html">Scene</a></li> <li id="nav-pc.SceneHandler"><a href="pc.SceneHandler.html">SceneHandler</a></li> <li id="nav-pc.ScopeId"><a href="pc.ScopeId.html">ScopeId</a></li> <li id="nav-pc.ScopeSpace"><a href="pc.ScopeSpace.html">ScopeSpace</a></li> <li id="nav-pc.ScreenComponent"><a href="pc.ScreenComponent.html">ScreenComponent</a></li> <li id="nav-pc.ScreenComponentSystem"><a href="pc.ScreenComponentSystem.html">ScreenComponentSystem</a></li> <li id="nav-pc.ScriptAttributes"><a href="pc.ScriptAttributes.html">ScriptAttributes</a></li> <li id="nav-pc.ScriptComponent"><a href="pc.ScriptComponent.html">ScriptComponent</a></li> <li id="nav-pc.ScriptComponentSystem"><a href="pc.ScriptComponentSystem.html">ScriptComponentSystem</a></li> <li id="nav-pc.ScriptHandler"><a href="pc.ScriptHandler.html">ScriptHandler</a></li> <li id="nav-pc.ScriptRegistry"><a href="pc.ScriptRegistry.html">ScriptRegistry</a></li> <li id="nav-pc.ScriptType"><a href="pc.ScriptType.html">ScriptType</a></li> <li id="nav-pc.ScrollbarComponent"><a href="pc.ScrollbarComponent.html">ScrollbarComponent</a></li> <li id="nav-pc.ScrollbarComponentSystem"><a href="pc.ScrollbarComponentSystem.html">ScrollbarComponentSystem</a></li> <li id="nav-pc.ScrollViewComponent"><a href="pc.ScrollViewComponent.html">ScrollViewComponent</a></li> <li id="nav-pc.ScrollViewComponentSystem"><a href="pc.ScrollViewComponentSystem.html">ScrollViewComponentSystem</a></li> <li id="nav-pc.Shader"><a href="pc.Shader.html">Shader</a></li> <li id="nav-pc.SingleContactResult"><a href="pc.SingleContactResult.html">SingleContactResult</a></li> <li id="nav-pc.Skeleton"><a href="pc.Skeleton.html">Skeleton</a></li> <li id="nav-pc.Skin"><a href="pc.Skin.html">Skin</a></li> <li id="nav-pc.SkinInstance"><a href="pc.SkinInstance.html">SkinInstance</a></li> <li id="nav-pc.Sound"><a href="pc.Sound.html">Sound</a></li> <li id="nav-pc.SoundComponent"><a href="pc.SoundComponent.html">SoundComponent</a></li> <li id="nav-pc.SoundComponentSystem"><a href="pc.SoundComponentSystem.html">SoundComponentSystem</a></li> <li id="nav-pc.SoundInstance"><a href="pc.SoundInstance.html">SoundInstance</a></li> <li id="nav-pc.SoundInstance3d"><a href="pc.SoundInstance3d.html">SoundInstance3d</a></li> <li id="nav-pc.SoundManager"><a href="pc.SoundManager.html">SoundManager</a></li> <li id="nav-pc.SoundSlot"><a href="pc.SoundSlot.html">SoundSlot</a></li> <li id="nav-pc.Sprite"><a href="pc.Sprite.html">Sprite</a></li> <li id="nav-pc.SpriteAnimationClip"><a href="pc.SpriteAnimationClip.html">SpriteAnimationClip</a></li> <li id="nav-pc.SpriteComponent"><a href="pc.SpriteComponent.html">SpriteComponent</a></li> <li id="nav-pc.SpriteComponentSystem"><a href="pc.SpriteComponentSystem.html">SpriteComponentSystem</a></li> <li id="nav-pc.SpriteHandler"><a href="pc.SpriteHandler.html">SpriteHandler</a></li> <li id="nav-pc.StandardMaterial"><a href="pc.StandardMaterial.html">StandardMaterial</a></li> <li id="nav-pc.StencilParameters"><a href="pc.StencilParameters.html">StencilParameters</a></li> <li id="nav-pc.Tags"><a href="pc.Tags.html">Tags</a></li> <li id="nav-pc.Texture"><a href="pc.Texture.html">Texture</a></li> <li id="nav-pc.TextureAtlas"><a href="pc.TextureAtlas.html">TextureAtlas</a></li> <li id="nav-pc.TextureAtlasHandler"><a href="pc.TextureAtlasHandler.html">TextureAtlasHandler</a></li> <li id="nav-pc.TextureHandler"><a href="pc.TextureHandler.html">TextureHandler</a></li> <li id="nav-pc.Touch"><a href="pc.Touch.html">Touch</a></li> <li id="nav-pc.TouchDevice"><a href="pc.TouchDevice.html">TouchDevice</a></li> <li id="nav-pc.TouchEvent"><a href="pc.TouchEvent.html">TouchEvent</a></li> <li id="nav-pc.TransformFeedback"><a href="pc.TransformFeedback.html">TransformFeedback</a></li> <li id="nav-pc.Vec2"><a href="pc.Vec2.html">Vec2</a></li> <li id="nav-pc.Vec3"><a href="pc.Vec3.html">Vec3</a></li> <li id="nav-pc.Vec4"><a href="pc.Vec4.html">Vec4</a></li> <li id="nav-pc.VertexAttributeDescription"><a href="pc.VertexAttributeDescription.html">VertexAttributeDescription</a></li> <li id="nav-pc.VertexAttributeElement"><a href="pc.VertexAttributeElement.html">VertexAttributeElement</a></li> <li id="nav-pc.VertexBuffer"><a href="pc.VertexBuffer.html">VertexBuffer</a></li> <li id="nav-pc.VertexFormat"><a href="pc.VertexFormat.html">VertexFormat</a></li> <li id="nav-pc.VertexIterator"><a href="pc.VertexIterator.html">VertexIterator</a></li> <li id="nav-pc.VertexIteratorAccessor"><a href="pc.VertexIteratorAccessor.html">VertexIteratorAccessor</a></li> <li id="nav-pc.XrInput"><a href="pc.XrInput.html">XrInput</a></li> <li id="nav-pc.XrInputSource"><a href="pc.XrInputSource.html">XrInputSource</a></li> <li id="nav-pc.XrManager"><a href="pc.XrManager.html">XrManager</a></li> </ul> </nav> <div class='sidebarToggle'><span></span>Class List</div> <main class="cls"> <h1>pc.ScriptType</h1> <p class="extends">Extends: <a href="pc.EventHandler.html">pc.EventHandler</a></p> <p><p>Represents the type of a script. It is returned by <a href="pc.html#createScript">pc.createScript</a>. Also referred to as Script Type.</p> <p>The type is to be extended using its JavaScript prototype. There is a <strong>list of methods</strong> that will be executed by the engine on instances of this type, such as:</p> <ul> <li>initialize</li> <li>postInitialize</li> <li>update</li> <li>postUpdate</li> <li>swap</li> </ul> <p><strong>initialize</strong> and <strong>postInitialize</strong> - are called if defined when script is about to run for the first time - postInitialize will run after all initialize methods are executed in the same tick or enabling chain of actions.</p> <p><strong>update</strong> and <strong>postUpdate</strong> - methods are called if defined for enabled (running state) scripts on each tick.</p> <p><strong>swap</strong> - This method will be called when a <a href="pc.ScriptType.html">pc.ScriptType</a> that already exists in the registry gets redefined. If the new <a href="pc.ScriptType.html">pc.ScriptType</a> has a <code>swap</code> method in its prototype, then it will be executed to perform hot-reload at runtime.</p></p> <!-- summary --> <h1>Summary</h1> <!--type definitions--> <!--static properties--> <!--static methods--> <h3>Static Methods</h3> <table class="properties"> <tr> <td><a href="#extend">extend</a></td><td><p>Shorthand function to extend Script Type prototype with list of methods.</td> </tr> </table> <!--properties--> <h3>Properties</h3> <table class="properties"> <tr> <td><a href="#app">app</a></td><td><p>The <a href="pc.Application.html">pc.Application</a> that the instance of this type belongs to.</td> </tr> <tr> <td><a href="#attributes">attributes</a></td><td><p>The interface to define attributes for Script Types.<span class='readonly'>[read only]</span></td> </tr> <tr> <td><a href="#enabled">enabled</a></td><td><p>True if the instance of this type is in running state.</td> </tr> <tr> <td><a href="#entity">entity</a></td><td><p>The <a href="pc.Entity.html">pc.Entity</a> that the instance of this type belongs to.</td> </tr> </table> <!--methods--> <h3>Methods</h3> <table class="properties"> <tr> <td><a href="#[initialize]">[initialize]</a></td><td><p>Called when script is about to run for the first time.</td> </tr> <tr> <td><a href="#[postInitialize]">[postInitialize]</a></td><td><p>Called after all initialize methods are executed in the same tick or enabling chain of actions.</td> </tr> <tr> <td><a href="#[postUpdate]">[postUpdate]</a></td><td><p>Called for enabled (running state) scripts on each tick, after update.</td> </tr> <tr> <td><a href="#[swap]">[swap]</a></td><td><p>Called when a ScriptType that already exists in the registry gets redefined.</td> </tr> <tr> <td><a href="#[update]">[update]</a></td><td><p>Called for enabled (running state) scripts on each tick.</td> </tr> </table> <!--events--> <h3>Events</h3> <table class="properties"> <tr> <td><a href="#event:attr:[name]">attr:[name]</a></td><td><p>Fired when a specific script attribute has been changed.</td> </tr> <tr> <td><a href="#event:attr">attr</a></td><td><p>Fired when any script attribute has been changed.</td> </tr> <tr> <td><a href="#event:destroy">destroy</a></td><td><p>Fired when a script instance is destroyed and removed from component.</td> </tr> <tr> <td><a href="#event:disable">disable</a></td><td><p>Fired when a script instance becomes disabled.</td> </tr> <tr> <td><a href="#event:enable">enable</a></td><td><p>Fired when a script instance becomes enabled.</td> </tr> <tr> <td><a href="#event:error">error</a></td><td><p>Fired when a script instance had an exception.</td> </tr> <tr> <td><a href="#event:state">state</a></td><td><p>Fired when a script instance changes state to enabled or disabled.</td> </tr> </table> <h2>Inherited</h2> <!--inherited methods--> <!--inherited properties--> <!--inherited static methods--> <h3>Methods</h3> <table class="properties"> <tr> <td><a href="#fire">fire</a></td><td><p>Fire an event, all additional arguments are passed on to the event listener.</td> </tr> <tr> <td><a href="#hasEvent">hasEvent</a></td><td><p>Test if there are any handlers bound to an event name.</td> </tr> <tr> <td><a href="#off">off</a></td><td><p>Detach an event handler from an event.</td> </tr> <tr> <td><a href="#on">on</a></td><td><p>Attach an event handler to an event.</td> </tr> <tr> <td><a href="#once">once</a></td><td><p>Attach an event handler to an event.</td> </tr> </table> <!--inherited events--> <h1>Details</h1> <!--type definitions--> <!--static members--> <!--static methods--> <h2>Static Methods</h2> <div id="extend"> <h3 class="methodname">extend(methods) <a class="font-icon" href="#extend">&#58216;</a></h3> <p><p>Shorthand function to extend Script Type prototype with list of methods.</p></p> <pre><code class="javascript">var PlayerController = pc.createScript('playerController'); PlayerController.extend({ initialize: function () { // called once on initialize }, update: function (dt) { // called each tick } });</code></pre> <h4>Parameters</h4> <table> <tr> <td>methods</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Object with methods, where key - is name of method, and value - is function.</p></td> </tr> </table> </div> <h2>Constructor</h2> <!-- Constructor --> <div id="ScriptType"> <h3 class="methodname">ScriptType(args) <a class="font-icon" href="#ScriptType">&#58216;</a></h3> <p></p> <h4>Parameters</h4> <table> <tr> <td>args</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>The input arguments object</p></td> </tr> <tr> <td>args.app</td><td><a href="pc.Application.html">pc.Application</a></td><td><p>The <a href="pc.Application.html">pc.Application</a> that is running the script</p></td> </tr> <tr> <td>args.entity</td><td><a href="pc.Entity.html">pc.Entity</a></td><td><p>The <a href="pc.Entity.html">pc.Entity</a> that the script is attached to</p></td> </tr> </table> </div> <!--properties--> <h2>Properties</h2> <div id="app"> <span class="property"><a href="pc.Application.html">pc.Application</a></span><span class="property">app <a class="font-icon" href="#app">&#58216;</a></span> <p><p>The <a href="pc.Application.html">pc.Application</a> that the instance of this type belongs to.</p></p> </div> <div id="attributes"> <span class="property"><a href="pc.ScriptAttributes.html">pc.ScriptAttributes</a></span><span class="property">attributes <a class="font-icon" href="#attributes">&#58216;</a></span> <p><p>The interface to define attributes for Script Types. Refer to <a href="pc.ScriptAttributes.html">pc.ScriptAttributes</a>.</p><span class='readonly'>[read only]</span></p> <pre><code class="javascript">var PlayerController = pc.createScript('playerController'); PlayerController.attributes.add('speed', { type: 'number', title: 'Speed', placeholder: 'km/h', default: 22.2 });</code></pre> </div> <div id="enabled"> <span class="property"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></span><span class="property">enabled <a class="font-icon" href="#enabled">&#58216;</a></span> <p><p>True if the instance of this type is in running state. False when script is not running, because the Entity or any of its parents are disabled or the Script Component is disabled or the Script Instance is disabled. When disabled no update methods will be called on each tick. initialize and postInitialize methods will run once when the script instance is in <code>enabled</code> state during app tick.</p></p> </div> <div id="entity"> <span class="property"><a href="pc.Entity.html">pc.Entity</a></span><span class="property">entity <a class="font-icon" href="#entity">&#58216;</a></span> <p><p>The <a href="pc.Entity.html">pc.Entity</a> that the instance of this type belongs to.</p></p> </div> <!--methods--> <h2>Methods</h2> <div id="[initialize]"> <h3 class="methodname">[initialize]() <a class="font-icon" href="#[initialize]">&#58216;</a></h3> <p><p>Called when script is about to run for the first time.</p></p> </div> <div id="[postInitialize]"> <h3 class="methodname">[postInitialize]() <a class="font-icon" href="#[postInitialize]">&#58216;</a></h3> <p><p>Called after all initialize methods are executed in the same tick or enabling chain of actions.</p></p> </div> <div id="[postUpdate]"> <h3 class="methodname">[postUpdate](dt) <a class="font-icon" href="#[postUpdate]">&#58216;</a></h3> <p><p>Called for enabled (running state) scripts on each tick, after update.</p></p> <h4>Parameters</h4> <table> <tr> <td>dt</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a></td><td><p>The delta time in seconds since the last frame.</p></td> </tr> </table> </div> <div id="[swap]"> <h3 class="methodname">[swap]() <a class="font-icon" href="#[swap]">&#58216;</a></h3> <p><p>Called when a ScriptType that already exists in the registry gets redefined. If the new ScriptType has a <code>swap</code> method in its prototype, then it will be executed to perform hot-reload at runtime.</p></p> </div> <div id="[update]"> <h3 class="methodname">[update](dt) <a class="font-icon" href="#[update]">&#58216;</a></h3> <p><p>Called for enabled (running state) scripts on each tick.</p></p> <h4>Parameters</h4> <table> <tr> <td>dt</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a></td><td><p>The delta time in seconds since the last frame.</p></td> </tr> </table> </div> <!--events--> <h2>Events</h2> <div id="event:attr:[name]"> <h3 class="methodname">attr:[name] <a class="font-icon" href="#event:attr:[name]">&#58216;</a></h3> <p><p>Fired when a specific script attribute has been changed.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('attr:speed', function (value, valueOld) { console.log('speed been changed from ' + valueOld + ' to ' + value); }); };</code></pre> <h4>Parameters</h4> <table> <tr> <td>value</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>New value.</p></td> </tr> <tr> <td>valueOld</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Old value.</p></td> </tr> </table> </div> <div id="event:attr"> <h3 class="methodname">attr <a class="font-icon" href="#event:attr">&#58216;</a></h3> <p><p>Fired when any script attribute has been changed.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('attr', function (name, value, valueOld) { console.log(name + ' been changed from ' + valueOld + ' to ' + value); }); };</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>Name of attribute.</p></td> </tr> <tr> <td>value</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>New value.</p></td> </tr> <tr> <td>valueOld</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Old value.</p></td> </tr> </table> </div> <div id="event:destroy"> <h3 class="methodname">destroy <a class="font-icon" href="#event:destroy">&#58216;</a></h3> <p><p>Fired when a script instance is destroyed and removed from component.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('destroy', function () { // no more part of an entity // good place to cleanup entity from destroyed script }); };</code></pre> </div> <div id="event:disable"> <h3 class="methodname">disable <a class="font-icon" href="#event:disable">&#58216;</a></h3> <p><p>Fired when a script instance becomes disabled.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('disable', function () { // Script Instance is now disabled }); };</code></pre> </div> <div id="event:enable"> <h3 class="methodname">enable <a class="font-icon" href="#event:enable">&#58216;</a></h3> <p><p>Fired when a script instance becomes enabled.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('enable', function () { // Script Instance is now enabled }); };</code></pre> </div> <div id="event:error"> <h3 class="methodname">error <a class="font-icon" href="#event:error">&#58216;</a></h3> <p><p>Fired when a script instance had an exception. The script instance will be automatically disabled.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('error', function (err, method) { // caught an exception console.log(err.stack); }); };</code></pre> <h4>Parameters</h4> <table> <tr> <td>err</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error">Error</a></td><td><p>Native JavaScript Error object with details of error.</p></td> </tr> <tr> <td>method</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>The method of the script instance that the exception originated from.</p></td> </tr> </table> </div> <div id="event:state"> <h3 class="methodname">state <a class="font-icon" href="#event:state">&#58216;</a></h3> <p><p>Fired when a script instance changes state to enabled or disabled.</p></p> <pre><code class="javascript">PlayerController.prototype.initialize = function () { this.on('state', function (enabled) { console.log('Script Instance is now ' + (enabled ? 'enabled' : 'disabled')); }); };</code></pre> <h4>Parameters</h4> <table> <tr> <td>enabled</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></td><td><p>True if now enabled, False if disabled.</p></td> </tr> </table> </div> <h2>Inherited</h2> <!--inherited properties--> <!--inherited methods--> <h2>Methods</h2> <div id="fire"> <h3 class="methodname">fire(name, [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7], [arg8]) <a class="font-icon" href="#fire">&#58216;</a></h3> <p><p>Fire an event, all additional arguments are passed on to the event listener.</p></p> <pre><code class="javascript">obj.fire('test', 'This is the message');</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Name of event to fire.</p></td> </tr> <tr> <td>arg1</td><td><a href="#">*</a></td><td><p>First argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg2</td><td><a href="#">*</a></td><td><p>Second argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg3</td><td><a href="#">*</a></td><td><p>Third argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg4</td><td><a href="#">*</a></td><td><p>Fourth argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg5</td><td><a href="#">*</a></td><td><p>Fifth argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg6</td><td><a href="#">*</a></td><td><p>Sixth argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg7</td><td><a href="#">*</a></td><td><p>Seventh argument that is passed to the event handler.</p></td> </tr> <tr> <td>arg8</td><td><a href="#">*</a></td><td><p>Eighth argument that is passed to the event handler.</p></td> </tr> </table> <h4>Returns</h4> <a href="pc.EventHandler.html">pc.EventHandler</a> <p>Self for chaining.</p> </div> <div id="hasEvent"> <h3 class="methodname">hasEvent(name) <a class="font-icon" href="#hasEvent">&#58216;</a></h3> <p><p>Test if there are any handlers bound to an event name.</p></p> <pre><code class="javascript">obj.on('test', function () { }); // bind an event to 'test' obj.hasEvent('test'); // returns true obj.hasEvent('hello'); // returns false</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>The name of the event to test.</p></td> </tr> </table> <h4>Returns</h4> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a> <p>True if the object has handlers bound to the specified event name.</p> </div> <div id="off"> <h3 class="methodname">off([name], [callback], [scope]) <a class="font-icon" href="#off">&#58216;</a></h3> <p><p>Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.</p></p> <pre><code class="javascript">var handler = function () { }; obj.on('test', handler); obj.off(); // Removes all events obj.off('test'); // Removes all events called 'test' obj.off('test', handler); // Removes all handler functions, called 'test' obj.off('test', handler, this); // Removes all hander functions, called 'test' with scope this</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>Name of the event to unbind.</p></td> </tr> <tr> <td>callback</td><td><a href="pc.callbacks.html#HandleEvent">pc.callbacks.HandleEvent</a></td><td><p>Function to be unbound.</p></td> </tr> <tr> <td>scope</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Scope that was used as the this when the event is fired.</p></td> </tr> </table> <h4>Returns</h4> <a href="pc.EventHandler.html">pc.EventHandler</a> <p>Self for chaining.</p> </div> <div id="on"> <h3 class="methodname">on(name, callback, [scope]) <a class="font-icon" href="#on">&#58216;</a></h3> <p><p>Attach an event handler to an event.</p></p> <pre><code class="javascript">obj.on('test', function (a, b) { console.log(a + b); }); obj.fire('test', 1, 2); // prints 3 to the console</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>Name of the event to bind the callback to.</p></td> </tr> <tr> <td>callback</td><td><a href="pc.callbacks.html#HandleEvent">pc.callbacks.HandleEvent</a></td><td><p>Function that is called when event is fired. Note the callback is limited to 8 arguments.</p></td> </tr> <tr> <td>scope</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Object to use as 'this' when the event is fired, defaults to current this.</p></td> </tr> </table> <h4>Returns</h4> <a href="pc.EventHandler.html">pc.EventHandler</a> <p>Self for chaining.</p> </div> <div id="once"> <h3 class="methodname">once(name, callback, [scope]) <a class="font-icon" href="#once">&#58216;</a></h3> <p><p>Attach an event handler to an event. This handler will be removed after being fired once.</p></p> <pre><code class="javascript">obj.once('test', function (a, b) { console.log(a + b); }); obj.fire('test', 1, 2); // prints 3 to the console obj.fire('test', 1, 2); // not going to get handled</code></pre> <h4>Parameters</h4> <table> <tr> <td>name</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a></td><td><p>Name of the event to bind the callback to.</p></td> </tr> <tr> <td>callback</td><td><a href="pc.callbacks.html#HandleEvent">pc.callbacks.HandleEvent</a></td><td><p>Function that is called when event is fired. Note the callback is limited to 8 arguments.</p></td> </tr> <tr> <td>scope</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">object</a></td><td><p>Object to use as 'this' when the event is fired, defaults to current this.</p></td> </tr> </table> <h4>Returns</h4> <a href="pc.EventHandler.html">pc.EventHandler</a> <p>Self for chaining.</p> </div> <!--inherited events--> </main> </div> </body> </html>