{"id":613,"date":"2016-02-08T12:40:37","date_gmt":"2016-02-08T11:40:37","guid":{"rendered":"http:\/\/www.zoltane.com\/pages\/?page_id=613"},"modified":"2016-02-23T11:51:29","modified_gmt":"2016-02-23T10:51:29","slug":"amps-documentation","status":"publish","type":"page","link":"https:\/\/zoltane.com\/pages\/unity\/a-m-p-s\/amps-documentation\/","title":{"rendered":"Amps documentation"},"content":{"rendered":"<section class=\"wpb-content-wrapper\"><p>[vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dThe Amps Editor window\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]To add or edit an Amps emitter component start the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Amps Editor<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>from the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Window<\/em> menu. The editor window shows the contents of the <em>Amps Blueprint<\/em> asset the emitter component in the selected game object references.<\/p>\n<p>\u00a0<\/p>\n<p>At the top are the editor controls:[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_single_image image=\u201d558\u2033 img_size=\u201dfull\u201d alignment=\u201dcenter\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<strong><em>GameObject<\/em><\/strong>: Located at the far left and shows<span class=\"Apple-converted-space\">\u00a0<\/span>the name of the game object which is currently edited.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Lock<\/strong><\/em>: While unlocked, the Amps editor window edits the game object currently selected in the hierarchy. Turning on this lock will make the editor stick with whatever emitter it was showing.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Blueprint<\/strong><\/em>: The assigned blueprint asset. (Currently in Unity 5 the file name is not shown here anymore.)<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Blueprint options<\/strong><\/em>: The menu contains the operations related to blueprints:<\/p>\n<p style=\"padding-left: 30px;\"><em><strong>Duplicate blueprint<\/strong><\/em>: Copies the contents of the current blueprint to a new asset.<\/p>\n<p style=\"padding-left: 30px;\"><em><strong>Create module dump<\/strong><\/em>: Used for debugging.<\/p>\n<p style=\"padding-left: 30px;\"><em><strong>Port an asset<\/strong><\/em>: Used for debugging.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Restart<\/strong><\/em>: Re-initializes the emitter. It is recommended to use it after major edits of the particle system, especially when dealing with emitter time related curves. The emitter must be restarted after changing the particle limit.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Pause<\/strong><\/em>: Pauses or unpauses the particle system. Useful for debugging or waking up the emitter after it went to sleep, typically after longer UI operations in the Unity editor (resizing windows, browsing menus, etc).<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Commit<\/strong><\/em>: Saves all changes to the related blueprint. IMPORTANT: This button is the <span style=\"text-decoration: underline;\"><em>only<\/em><\/span><span class=\"Apple-converted-space\">\u00a0<\/span>way to update the asset. Saving the project or the scene\u00a0<span style=\"text-decoration: underline;\"><em>will not<\/em><\/span><span class=\"Apple-converted-space\">\u00a0<\/span>save the changes. The state of the asset is not tracked so there will be no warning about unsaved changes when closing the Amps editor window or the scene. This could be a problem when editing an emitter hierarchy and jumping around tweaking multiple emitters, so when in doubt go through all of them and commit.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]An Amps emitter has s<em>tacks<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>that contain<span class=\"Apple-converted-space\">\u00a0<\/span><em>modules<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>with several<span class=\"Apple-converted-space\">\u00a0<\/span><em>properties<\/em>, many of which has its own<span class=\"Apple-converted-space\">\u00a0<\/span><em>value picker<\/em>. The UI is set up accordingly:[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_single_image image=\u201d557\u2033 img_size=\u201dfull\u201d alignment=\u201dcenter\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<strong><em>Stacks column<\/em><\/strong>: The left most column shows the available stacks with the currently selected one highlighted.<\/p>\n<p><strong><em>Modules column<\/em><\/strong>: Lists the modules in the selected stack. Provides a button to add a new module (except in the<em><span class=\"Apple-converted-space\"> [<\/span>Emitter]<\/em> stack).<\/p>\n<p><strong><em>Properties column<\/em><\/strong>: The properties of the selected module.<\/p>\n<p><strong><em>Value picker column<\/em><\/strong>: If the selected property has a value picker then it shows up here.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Bellow the columns is the toggleable emitter parameters panel where emitter specific data can be created.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_single_image image=\u201d570\u2033 img_size=\u201dfull\u201d alignment=\u201dcenter\u201d qode_css_animation=\u201d\u201d el_class=\u201dimage_frame\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]That information is saved with the scene and can be queried by module properties. This mechanic makes it possible to reuse the same blueprint in multiple emitters but still have the freedom to change certain aspects on a case by case basis. For example level designers can adapt each emitter\u2019s look to fit the environment or programmers can adjust these parameters on the fly from scripts.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Each parameter has a name which is used to identify the data (should be unique), a type and a value. The following types are available:<\/p>\n<p><em><strong>Bool<\/strong><\/em>: A simple on\/off flag.<\/p>\n<p><em><strong>GameObject<\/strong><\/em>: A GameObject in the scene. Blueprints can not directly store references to scene specific items, the only way to reach those is through these kind of parameters.<\/p>\n<p><em><strong>Material<\/strong><\/em>: Reference to a material in the project.<\/p>\n<p><em><strong>Mesh<\/strong><\/em>: Reference to a mesh in the project.<\/p>\n<p><em><strong>Scalar<\/strong><\/em>: A numeric value.<\/p>\n<p><em><strong>Vector<\/strong><\/em>: A vector value.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dStacks\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Stacks control particle properties, from color to motion. Each stack contains modules which get evaluated one after the other to generate the stack\u2019s result. By placing and configuring modules in different stacks we define the different aspects of each particle.<\/p>\n<p>Here are the different stack types:<\/p>\n<p><em><strong>Emitter<\/strong><\/em><\/p>\n<p>This stack always contains exactly one Emitter module for configuring the main properties of the particle system.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Render<\/em><\/strong><\/p>\n<p>A place for one or more render modules which give a shape to the calculated particle data. This stack can only contain \u201crender\u201d type modules although \u201crendering\u201d can be anything from mesh creation through sound synthesis to writing a file.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Shared<\/strong><\/em><\/p>\n<p>General purpose modules can be placed here to share their properties. Shared properties can be referenced from other modules in other stacks which is useful if we want to control multiple values from a central location. The stack is never evaluated (the modules are just for storing settings) so the order is irrelevant.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Spawn Rate<\/em><\/strong><\/p>\n<p>Modules in this scalar stack control how many particles are created a second.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Death Condition<\/em><\/strong><\/p>\n<p>When the result of the stack becomes 1 or more for a particle then that particle is marked for death and will be removed after a<span class=\"Apple-converted-space\">\u00a0<\/span>Death Duration<span class=\"Apple-converted-space\">\u00a0<\/span>period of time. (See next stack.)<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Death Duration<\/em><\/strong><\/p>\n<p>Defines how long it will take for a particle to die after being marked for removal. This time can be used to drive curve properties which are useful for gracefully handling particle death (by fading them out for example).<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Custom Scalar<\/em><\/strong><\/p>\n<p>A scalar stack to be used for arbitrary purposes like extra data for a render module or calculating expensive but reusable data.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Custom Vector<\/em><\/strong><\/p>\n<p>A vector stack to be used for arbitrary purposes like extra data for a render module or calculating expensive but reusable data.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Acceleration<\/strong><\/em><\/p>\n<p>The result of this stack directly sets the acceleration vector of a particle. Note that the final acceleration is also affected by the\u00a0Velocity<span class=\"Apple-converted-space\">\u00a0<\/span>and\u00a0Position<span class=\"Apple-converted-space\">\u00a0<\/span>stacks.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Velocity<\/strong><\/em><\/p>\n<p>The result of this stack directly sets the velocity vector of a particle. Note that the final velocity is also affected by the<span class=\"Apple-converted-space\">\u00a0<\/span>Acceleration<span class=\"Apple-converted-space\">\u00a0<\/span>and<span class=\"Apple-converted-space\">\u00a0<\/span>Position<span class=\"Apple-converted-space\">\u00a0<\/span>stacks.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Position<\/strong><\/em><\/p>\n<p>The result of this stack directly sets the position of a particle. Note that the final position is also affected by the<span class=\"Apple-converted-space\">\u00a0<\/span>Acceleration<span class=\"Apple-converted-space\">\u00a0<\/span>and<span class=\"Apple-converted-space\">\u00a0<\/span>Velocity<span class=\"Apple-converted-space\">\u00a0<\/span>stacks.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation Rate<\/em><\/strong><\/p>\n<p>Defines how many degrees a particle rotates around a given axis in a second. Note that the final rotation rate is also affected by the<span class=\"Apple-converted-space\">\u00a0<\/span>Rotation<span class=\"Apple-converted-space\">\u00a0<\/span>stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation<\/em><\/strong><\/p>\n<p>Defines how a particle is rotated around a given axis. Note that the final rotation is also affected by the<span class=\"Apple-converted-space\">\u00a0<\/span>Rotation Rate<span class=\"Apple-converted-space\">\u00a0<\/span>stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Scale<\/em><\/strong><\/p>\n<p>Sets the size of a particle.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Color<\/em><\/strong><\/p>\n<p>The RGBA color of a particle.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Pivot Offset<\/strong><\/em><\/p>\n<p>The origin of the particle representation is offset from the particle location by this amount. (If the chosen render module supports this feature.)<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Multi-Function<\/em><\/strong><\/p>\n<p>Special modules can be placed here which can modify multiple other stacks. It gets evaluated after all other stacks.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dModules\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Modules are the basic building blocks which generate or modify particle properties. Modules are placed in the aforementioned stacks and are evaluated from top to bottom for every particle. Each module takes the output of the previous one, processes it and passes on to the next. The output of the last module becomes the stack\u2019s result. Sampler modules may not change the incoming stack value if they fail to produce a valid sample (if for example the <em>Transform Module<\/em> can\u2019t get the transformation of a game object because that doesn\u2019t exist anymore).<\/p>\n<p>Modules can be enabled\/disabled with the tick box in the top left corner. The arrows on the right side move the module up or down in the stack. The module menu is at the top right corner: the module can be duplicated or deleted.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Common module properties<\/h5>\n<p>There are a few properties which are used in several modules:<\/p>\n<p><strong><em>Description<\/em><\/strong>: A name or note about what the module is used for.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Weight<\/em><\/strong>: How much the module changes incoming values.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Blend mode<\/em><\/strong>: How the module\u2019s value is mixed with the incoming one.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Sampler module properties<\/h5>\n<p>Sampler modules do their more expensive calculations only if certain conditions are met. They share the following properties:<\/p>\n<p><em><strong>Sample condition<\/strong><\/em>: Defines when to resample. (<em>On Collision<\/em> is not implemented yet.)<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Sample on spawn?<\/strong><\/em>: If true then a sampling occurs when a particle is born. If false then the sampler will not change incoming values until it gets its first sample.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Initial delay<\/strong><\/em>: Sampling happens this amount of time after the<span class=\"Apple-converted-space\">\u00a0<\/span>Sample condition<span class=\"Apple-converted-space\">\u00a0<\/span>was met.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Base Emitter Module<\/h5>\n<p>A special module, resides in the <em>[Emitter]<\/em> stack and can not be deleted. Defines the fundamental aspects of the emitter.<\/p>\n<p><em><strong>Plays on start?<\/strong><\/em>: If checked then the emitter start as soon as the scene is loaded.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Pause when unseen duration<\/strong><\/em>: The emitter will pause itself when not rendered for this long. Currently this mechanic is also active while editing so if the Unity editor stops rendering the viewports for a while (which happens while adjusting window size or browsing the menus) then the emitter might pause itself. You can use the Amps editor\u2019s<span class=\"Apple-converted-space\">\u00a0<\/span><em>Restart<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>or<span class=\"Apple-converted-space\">\u00a0<\/span><em>Pause<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>buttons to get it running again.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Emitter duration<\/strong><\/em>: The\u00a0<em>Time: Loop (0..1)<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>curve input goes through the 0..1 range during this time interval. There is always at least one \u201cloop\u201d, starting at the start of the emitter lasting<span class=\"Apple-converted-space\">\u00a0<\/span>Emitter duration<span class=\"Apple-converted-space\">\u00a0<\/span>long.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Looping?<\/strong><\/em>: If true then the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Time: Loop (0..1)<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>curve input will repeat that range over and over as emitter time passes.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Particle limit<\/strong><\/em>: The maximum number of particles in the emitter. The higher it is set the more memory is used.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Time scale<\/strong><\/em>: A multiplier to speed up of slow down the particle system.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Accel. noise smoothing<\/strong><\/em>: Smoothing applied to the final acceleration values used in the<span class=\"Apple-converted-space\">\u00a0<\/span>Acceleration<span class=\"Apple-converted-space\">\u00a0<\/span>curve input. Has no affect on the movement of particles.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Motion Tweaker MF Module<\/h5>\n<p>A multi-function module allowing us to directly modify particle acceleration, momentum, velocity and displacement using multipliers. Usually the multiplier vectors are used in curve mode (see more about property modes<span class=\"Apple-converted-space\">\u00a0<\/span>bellow) to control the values by some other system property. For example zero out momentum when a particle\u2019s position on the Y axis is lower then 0, the ground level.<\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Quick Setup MF Module<\/h5>\n<p>A multi-function module providing a simple interface for setting up particle properties. Typically used to rough out a particle system before polishing it.<\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Quad Render Module<\/h5>\n<p>Renders a quad for each particle.<\/p>\n<p><em><strong>Material<\/strong><\/em>: Specifies what material should be used.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Orientation<\/strong><\/em>: How the quad is aligned.<\/p>\n<p style=\"padding-left: 30px;\"><em>Camera facing<\/em>: Always faces the camera.<\/p>\n<p style=\"padding-left: 30px;\"><em>Default<\/em>: The<span class=\"Apple-converted-space\">\u00a0<\/span>Rotation<span class=\"Apple-converted-space\">\u00a0<\/span>stack\u2019s value defines the orientation.<\/p>\n<p style=\"padding-left: 30px;\"><em>Rotated camera facing<\/em>: First the polygons are aligned to the camera then rotated by the value coming from the<span class=\"Apple-converted-space\">\u00a0<\/span>Rotation<span class=\"Apple-converted-space\">\u00a0<\/span>stack.<\/p>\n<p style=\"padding-left: 30px;\"><em>Upright camera facing<\/em>: Tries to face the camera but only rotates on the up axis.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Normal mode<\/strong><\/em>: Defines how vertex normals are generated.<\/p>\n<p style=\"padding-left: 30px;\"><em>Flat<\/em>: Normals point the direction the quad faces.<\/p>\n<p style=\"padding-left: 30px;\"><em>Skip<\/em>: Normals are not calculated.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Tangent mode<\/strong><\/em>: The way tangent data is generated.<\/p>\n<p style=\"padding-left: 30px;\"><em>Custom Vector (XYZW)<\/em>: The result of the<span class=\"Apple-converted-space\">\u00a0<\/span>Custom Vector<span class=\"Apple-converted-space\">\u00a0<\/span>stack is passed as vertex tangents. Used to supply a shader with additional data.<\/p>\n<p style=\"padding-left: 30px;\"><em>Generate<\/em>: Provides valid tangents.<\/p>\n<p style=\"padding-left: 30px;\"><em>Skip<\/em>: No tangent data will be created.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>UV2 mode<\/strong><\/em>: How the secondary UV is calculated.<\/p>\n<p style=\"padding-left: 30px;\"><em>Custom Vector (XY)<\/em>: The first two members of the<span class=\"Apple-converted-space\">\u00a0<\/span>Custom Vector<span class=\"Apple-converted-space\">\u00a0<\/span>stack\u2019s result is passed to the shader.<\/p>\n<p style=\"padding-left: 30px;\"><em>Custom Vector (XYZW)<\/em>: The whole vector is packed into two floats so the data must be unpacked in the shader. It\u2019s a lossy operation. This feature is currently so buggy that it\u2019s useless.<\/p>\n<p style=\"padding-left: 30px;\"><em>Skip<\/em>: Second UV coordinates are not created.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Double sided?<\/strong><\/em>: If true then a backfacing quad will be generated too. Only practical to use this feature with<span class=\"Apple-converted-space\">\u00a0<\/span>Default<span class=\"Apple-converted-space\">\u00a0<\/span>and<span class=\"Apple-converted-space\">\u00a0<\/span>Rotated Camera Facing<span class=\"Apple-converted-space\">\u00a0<\/span>orientations.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Mesh Render Module<\/h5>\n<p>Represents each particle with a mesh.<\/p>\n<p><em><strong>Material<\/strong><\/em>: Specifies what material should be used.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Mesh count<\/strong><\/em>: Sets how many meshes can be defined.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Mesh N<\/strong><\/em>: A reference to a mesh asset. A mesh will be randomly picked from this list for each particle.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_separator type=\u201dnormal\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Color Module<\/h5>\n<p>(Partially implemented.) A convenient way to create an RGBA color. Because the \u201ccolor\u201d type properties are not working yet it is recommended to use the<span class=\"Apple-converted-space\">\u00a0<\/span>Vector module<span class=\"Apple-converted-space\">\u00a0<\/span>to define colors.<\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Data Converter Module<\/h5>\n<p>Converts any incoming data. Only works in vector producing stacks (like<span class=\"Apple-converted-space\">\u00a0<\/span>Velocity<span class=\"Apple-converted-space\">\u00a0<\/span>as opposed to<span class=\"Apple-converted-space\">\u00a0<\/span>Spawn rate). Converts a direction vector to Euler rotations and back, RGB to HSV and back.<\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Event Creator Module<\/h5>\n<p>If the defined condition is fulfilled then sends an event to all child emitters so <em>Event Listener Modules<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>can react.<\/p>\n<p>\u00a0<\/p>\n<p>First we must set the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Event name<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>property: This name identifies the event generated by this particular module and listeners will only react if they monitoring this exact same name.<\/p>\n<p>\u00a0<\/p>\n<p>The next step is defining the condition. If the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Current stack<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>flag is set the current stack\u2019s value will be tested against the<span class=\"Apple-converted-space\">\u00a0<\/span><em>Value<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>property in the way indicated by the <em>Condition<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>dropdown. If<span class=\"Apple-converted-space\">\u00a0<\/span><em>Current stack<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>is unticked then one of the available particle system properties can be chosen for testing. When a vector property is involved then the <em>Component<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>dropdown allows to pick a member of that vector.<\/p>\n<p>\u00a0<\/p>\n<p>The<span class=\"Apple-converted-space\">\u00a0<\/span><em>Max event count per loop<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>specifies the maximum number of events fired in an emitter loop, while<span class=\"Apple-converted-space\">\u00a0<\/span><em>Min event delay<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>constraints how close two events can be to each other.<\/p>\n<p>\u00a0<\/p>\n<p>The last group of properties allow to pass extra data with the event so related listener modules can use it.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Event Listener Module<\/h5>\n<p>Reacts to named events broadcast in the current hierarchy (<em>Event name property<\/em>). The untriggered module will produce the <em>Untriggered value<\/em>, however when an event arrives <em>Trigger data mode<\/em> defines how the output changes: the result becomes either a manually set one (<em>Custom value<\/em>) or one of the extra data packets sent by the <em>Event Creator Module<\/em>. If<em> Infinite trigger count<\/em> is false then the maximum number of accepted events can be set for every loop of the current emitter. When <em>Does an event toggle?<\/em> is unchecked then the module switches to the triggered state for a set duration after each event.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Info Module<\/h5>\n<p>Displays the current value of the stack at the point the module is placed or shows one of the curve inputs. In particle specific stacks (like Position) a random particle\u2019s values are shown. Used for debugging.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Normalize Module<\/h5>\n<p>Normalizes the incoming vector data. (Doesn\u2019t work with scalar stacks like <em>Spawn rate<\/em>.)[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Point Sampler Module<\/h5>\n<p>Samples a point (a vector value). Similar to <em>Vector sampler<\/em> but it implements position visualization.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Property Sampler Module<\/h5>\n<p>Samples a particle or emitter property in either the current or the immediate parent emitter.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Scalar Module<\/h5>\n<p>Defines a scalar value. In vector stacks (<em>Position<\/em> or <em>Color<\/em> for example) it is used as a vector with all components set to this value.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Transform Sampler Module<\/h5>\n<p>Samples the transform component of another object.<\/p>\n<p><em><strong>Object<\/strong><\/em>: An emitter parameter of <em>GameObject<\/em> type, referencing a scene object. If the parameter doesn\u2019t exist or does not point to a valid game object then this module will not modify anything.<br>\n<strong><em>Transform<\/em><\/strong>: Which transform property to sample.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Vector Module<\/h5>\n<p>Provides a vector value. It\u2019s meaning depends on its parent stack: in <em>Color<\/em> it will be interpreted as an RGBA color while in <em>Position<\/em> as a position in space.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Vector Sampler Module<\/h5>\n<p>Similar to <em>Vector<\/em> module but works as a sampler so it can produce a new value from time to time.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]<\/p>\n<h5>Volume Sampler Module<\/h5>\n<p>This module checks if the particle is in- or outside a volume defined by any of the stock Unity colliders. The actual object is referenced through a named emitter parameter.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dProperty modes\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Modules are configured through their properties. Each property has a header, an optional property menu in the top right corner and the actual value. The property menu allows us to switch how the property creates a value. The available modes are as follows:<\/p>\n<p><strong><em>Constant<\/em><\/strong>: A simple value which stays the same throughout the life of the particle or emitter.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Random<\/em><\/strong>: A random value between min-max values is picked. This value (and the random seed) stays the same throughout the life of the particle or emitter.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Curve<\/strong><\/em>: Allows to define a curve to produce the value. (See more about curves bellow.)<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Random Curve<\/em><\/strong>: Allows to define a minimum and maximum curve to produce the value.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Reference<\/em><\/strong>: References a similar property from the modules placed in the shared stack. Note that the referenced property\u2019s <em>setup<\/em> is cloned here not its actual result. So for example the minimum and maximum limits will be copied from the shared property to all others pointing to it but each of them will pick their own random value in that range.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Parameter<\/em><\/strong>: Attempts to reach an emitter parameter of the same name and appropriate type. This mode is useful for providing a way for emitter specific tweaks to a shader blueprint.[\/vc_column_text][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dCurves\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]Curves are defined by the following properties:<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Input<\/em><\/strong>: What kind of data in the system drives the curve. If a vector type is chosen then a drop-down menu shows up which allows to pick a member of the vector.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Input range<\/em><\/strong>: Defines the range of the input data.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Curve widget<\/em><\/strong>: The curve itself, clicking on the control opens up the standard curve editor. The horizontal axis represents the \u201cinput range\u201d portion of the input data while the vertical axis is the output range.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Output range<\/em><\/strong>: The range of possible output values.<\/p>\n<p>\u00a0<\/p>\n<p>These are the available curve inputs:<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Acceleration: Emitter<\/em><\/strong>: The calculated acceleration of the emitter, can be imprecise at extremes.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Acceleration: Particle<\/em><\/strong>: The final acceleration of the particle with accelerations created by the velocity and position stacks factored in.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Color<\/em><\/strong>: The value of the similarly named stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Custom Scalar<\/em><\/strong>: The value of the similarly named stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Custom Vector<\/em><\/strong>: The value of the similarly named stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Death Condition (0..1)<\/em><\/strong>: The value of the similarly named stack, representing how close the particle is to be marked for death.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Dying Duration<\/em><\/strong>: How long it is going to take for a particle to die after the \u201cDeath Condition\u201d was met.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Forward: Emitter<\/em><\/strong>: The forward vector of the emitter.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Forward: Particle<\/em><\/strong>: The forward vector of the particle.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Frame Rate (0..1)<\/em><\/strong>: Represents where the current frame rate is in the 15..60 fps range.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Particle count<\/em><\/strong>: The current particle count of the emitter.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Position: Emitter<\/em><\/strong>: The position of the game object which contains the emitter component.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Position: Emitter (Local)<\/em><\/strong>: The parent relative position of the game object which contains the emitter component.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Position: Particle<\/em><\/strong>: The final position of the particle with displacement by the acceleration and velocity stacks factored in.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation Rate<\/em><\/strong>: Particle: The value of the similarly named stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation: Emitter<\/em><\/strong>: The container game object\u2019s Euler rotation.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation: Emitter (Local)<\/em><\/strong>: The container game object\u2019s parent relative Euler rotation.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Rotation: Emitter<\/em><\/strong>: The final rotation of the particle with rotation by the rotation rate stack factored in.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Scale: Emitter<\/em><\/strong>: The scale of the emitter.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Scale: Particle<\/em><\/strong>: The value of the similarly named stack.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Spawn Rate<\/em><\/strong>: The current spawn rate.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Time: Collision<\/em><\/strong>: (Not implemented.) How long it\u2019s been since the last collision.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Time: Death (0..1)<\/em><\/strong>: How far the particle is through its \u201cDying Duration\u201d.<\/p>\n<p>\u00a0<\/p>\n<p><em><strong>Time: Emitter<\/strong><\/em>: The age of the emitter.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Time: Loop (0..1)<\/em><\/strong>: A value between 0 and 1 representing how far the emitter has completed its current loop.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Time: Particle<\/em><\/strong>: The age of the particle.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Velocity: Emitter<\/em><\/strong>: The calculated velocity of the emitter, can be imprecise at extremes.<\/p>\n<p>\u00a0<\/p>\n<p><strong><em>Velocity<\/em><\/strong>: Particle: The final velocity of the particle with velocities created by the acceleration and position stacks factored in.[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>[vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_text_separator title=\u201dThe Amps Editor window\u201d text_in_box=\u201dno\u201d text_position=\u201dcenter\u201d line_border_style=\u201dsolid\u201d line_dots=\u201dno\u201d][\/vc_column][\/vc_row][vc_row row_type=\u201drow\u201d use_row_as_full_screen_section=\u201dno\u201d type=\u201dfull_width\u201d oblique_section=\u201dno\u201d text_align=\u201dleft\u201d padding_bottom=\u201d32\u2033 css_animation=\u201d\u201d box_shadow_on_row=\u201dno\u201d][vc_column][vc_column_text]To add or edit an Amps emitter component start the\u00a0Amps Editor\u00a0from the\u00a0Window menu. The editor window shows the contents of the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":131,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-613","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/comments?post=613"}],"version-history":[{"count":7,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/613\/revisions"}],"predecessor-version":[{"id":641,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/613\/revisions\/641"}],"up":[{"embeddable":true,"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/pages\/131"}],"wp:attachment":[{"href":"https:\/\/zoltane.com\/pages\/wp-json\/wp\/v2\/media?parent=613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}