mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-24 14:06:23 +01:00
Particle path
This commit is contained in:
parent
c3051fa4d2
commit
64f4707b45
5 changed files with 45 additions and 4 deletions
|
@ -78,6 +78,11 @@ function __part(_node) constructor {
|
||||||
|
|
||||||
frame = 0;
|
frame = 0;
|
||||||
|
|
||||||
|
path = noone;
|
||||||
|
pathIndex = 0;
|
||||||
|
pathPos = new __vec2();
|
||||||
|
pathDiv = noone;
|
||||||
|
|
||||||
static reset = function() { #region
|
static reset = function() { #region
|
||||||
INLINE
|
INLINE
|
||||||
|
|
||||||
|
@ -168,6 +173,13 @@ function __part(_node) constructor {
|
||||||
alp_fade = _fade;
|
alp_fade = _fade;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
static setPath = function(_path, _pathDiv) { #region
|
||||||
|
INLINE
|
||||||
|
|
||||||
|
path = _path;
|
||||||
|
pathDiv = _pathDiv;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
static kill = function(callDestroy = true) { #region
|
static kill = function(callDestroy = true) { #region
|
||||||
INLINE
|
INLINE
|
||||||
|
|
||||||
|
@ -294,6 +306,14 @@ function __part(_node) constructor {
|
||||||
_xx = drawx + _pp[0];
|
_xx = drawx + _pp[0];
|
||||||
_yy = drawy + _pp[1];
|
_yy = drawy + _pp[1];
|
||||||
|
|
||||||
|
if(path != noone) {
|
||||||
|
var _div = pathDiv.get(lifeRat);
|
||||||
|
|
||||||
|
pathPos = path.getPointRatio(lifeRat, pathIndex, pathPos);
|
||||||
|
_xx = _xx * _div + pathPos.x;
|
||||||
|
_yy = _yy * _div + pathPos.y;
|
||||||
|
}
|
||||||
|
|
||||||
if(exact) {
|
if(exact) {
|
||||||
_xx = round(_xx);
|
_xx = round(_xx);
|
||||||
_yy = round(_yy);
|
_yy = round(_yy);
|
||||||
|
|
|
@ -150,12 +150,22 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger", onClick: triggerSpawn, output: true })
|
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger", onClick: triggerSpawn, output: true })
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
|
inputs[| 45] = nodeValue("Follow Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
|
||||||
|
.rejectArray();
|
||||||
|
|
||||||
|
inputs[| 46] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone )
|
||||||
|
.rejectArray();
|
||||||
|
|
||||||
|
inputs[| 47] = nodeValue("Path Deviation", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 )
|
||||||
|
.rejectArray();
|
||||||
|
|
||||||
input_len = ds_list_size(inputs);
|
input_len = ds_list_size(inputs);
|
||||||
|
|
||||||
input_display_list = [ 32,
|
input_display_list = [ 32,
|
||||||
["Sprite", false], 0, 22, 23, 26,
|
["Sprite", false], 0, 22, 23, 26,
|
||||||
["Spawn", true], 27, 16, 44, 1, 2, 3, 4, 30, 24, 5,
|
["Spawn", true], 27, 16, 44, 1, 2, 3, 4, 30, 24, 5,
|
||||||
["Movement", true], 29, 6, 18,
|
["Movement", true], 29, 6, 18,
|
||||||
|
["Follow path", true, 45], 46, 47,
|
||||||
["Physics", true], 7, 19, 33, 34, 35, 36,
|
["Physics", true], 7, 19, 33, 34, 35, 36,
|
||||||
["Ground", true, 37], 38, 39, 40,
|
["Ground", true, 37], 38, 39, 40,
|
||||||
["Rotation", true], 15, 8, 9,
|
["Rotation", true], 15, 8, 9,
|
||||||
|
@ -190,6 +200,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
|
|
||||||
curve_scale = noone;
|
curve_scale = noone;
|
||||||
curve_alpha = noone;
|
curve_alpha = noone;
|
||||||
|
curve_path_div = noone;
|
||||||
|
|
||||||
for( var i = 0; i < attributes.part_amount; i++ )
|
for( var i = 0; i < attributes.part_amount; i++ )
|
||||||
parts[i] = new __part(self);
|
parts[i] = new __part(self);
|
||||||
|
@ -235,6 +246,8 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
var _ground_bounce = getInputData(39);
|
var _ground_bounce = getInputData(39);
|
||||||
var _ground_frict = getInputData(40);
|
var _ground_frict = getInputData(40);
|
||||||
|
|
||||||
|
var _path = getInputData(46);
|
||||||
|
|
||||||
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
|
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
|
||||||
|
|
||||||
var _posDist = [];
|
var _posDist = [];
|
||||||
|
@ -330,6 +343,8 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
part.setGround(_ground, _ground_offset, _ground_bounce, _ground_frict);
|
part.setGround(_ground, _ground_offset, _ground_bounce, _ground_frict);
|
||||||
part.setTransform(_scx, _scy, curve_scale, _rot, _rot_spd, _follow);
|
part.setTransform(_scx, _scy, curve_scale, _rot, _rot_spd, _follow);
|
||||||
part.setDraw(_color, _bld, _alp, curve_alpha);
|
part.setDraw(_color, _bld, _alp, curve_alpha);
|
||||||
|
part.setPath(_path, curve_path_div);
|
||||||
|
|
||||||
spawn_index = safe_mod(spawn_index + 1, attributes.part_amount);
|
spawn_index = safe_mod(spawn_index + 1, attributes.part_amount);
|
||||||
onSpawn(_time, part);
|
onSpawn(_time, part);
|
||||||
|
|
||||||
|
@ -389,9 +404,11 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
|
|
||||||
var _curve_sca = getInputData(11);
|
var _curve_sca = getInputData(11);
|
||||||
var _curve_alp = getInputData(14);
|
var _curve_alp = getInputData(14);
|
||||||
|
var _curve_pth = getInputData(47);
|
||||||
|
|
||||||
curve_scale = new curveMap(_curve_sca, TOTAL_FRAMES);
|
curve_scale = new curveMap(_curve_sca, TOTAL_FRAMES);
|
||||||
curve_alpha = new curveMap(_curve_alp, TOTAL_FRAMES);
|
curve_alpha = new curveMap(_curve_alp, TOTAL_FRAMES);
|
||||||
|
curve_path_div = new curveMap(_curve_pth, TOTAL_FRAMES);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
render();
|
render();
|
||||||
|
@ -456,6 +473,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
var _dirAng = getInputData(29);
|
var _dirAng = getInputData(29);
|
||||||
var _turn = getInputData(34);
|
var _turn = getInputData(34);
|
||||||
var _spwTyp = getInputData(16);
|
var _spwTyp = getInputData(16);
|
||||||
|
var _usePth = getInputData(45);
|
||||||
|
|
||||||
inputs[| 6].setVisible(!_dirAng);
|
inputs[| 6].setVisible(!_dirAng);
|
||||||
|
|
||||||
|
@ -470,6 +488,8 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
inputs[| 23].setVisible(false);
|
inputs[| 23].setVisible(false);
|
||||||
inputs[| 26].setVisible(false);
|
inputs[| 26].setVisible(false);
|
||||||
|
|
||||||
|
inputs[| 46].setVisible(true, _usePth);
|
||||||
|
|
||||||
inputs[| 1].setVisible(_spwTyp < 2);
|
inputs[| 1].setVisible(_spwTyp < 2);
|
||||||
if(_spwTyp == 0) inputs[| 1].name = "Spawn delay";
|
if(_spwTyp == 0) inputs[| 1].name = "Spawn delay";
|
||||||
else if(_spwTyp == 1) inputs[| 1].name = "Spawn frame";
|
else if(_spwTyp == 1) inputs[| 1].name = "Spawn frame";
|
||||||
|
|
|
@ -50,6 +50,7 @@ function Node_VFX_Group(_x, _y, _group = noone) : Node_Collection(_x, _y, _group
|
||||||
var loop = getInputData(0);
|
var loop = getInputData(0);
|
||||||
if(!loop) return;
|
if(!loop) return;
|
||||||
|
|
||||||
|
if(IS_PLAYING)
|
||||||
for( var i = 0; i < TOTAL_FRAMES; i++ )
|
for( var i = 0; i < TOTAL_FRAMES; i++ )
|
||||||
for( var j = 0, m = ds_list_size(topoList); j < m; j++ ) {
|
for( var j = 0, m = ds_list_size(topoList); j < m; j++ ) {
|
||||||
var node = topoList[| j];
|
var node = topoList[| j];
|
||||||
|
|
|
@ -83,7 +83,7 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
|
|
||||||
if(CURRENT_FRAME == 0) {
|
if(CURRENT_FRAME == 0) {
|
||||||
reset();
|
reset();
|
||||||
reLoop();
|
if(IS_PLAYING) reLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IS_PLAYING) runVFX(frame);
|
if(IS_PLAYING) runVFX(frame);
|
||||||
|
|
|
@ -501,7 +501,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
||||||
var togl = array_safe_get(jun_disp, 2, noone);
|
var togl = array_safe_get(jun_disp, 2, noone);
|
||||||
if(togl != noone) var toging = _inspecting.getInputData(togl);
|
if(togl != noone) var toging = _inspecting.getInputData(togl);
|
||||||
|
|
||||||
var lbx = (togl != noone) * ui(36);
|
var lbx = (togl != noone) * ui(40);
|
||||||
var lbw = con_w - lbx;
|
var lbw = con_w - lbx;
|
||||||
var ltx = lbx + ui(32);
|
var ltx = lbx + ui(32);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue