forked from LeenkxTeam/LNXSDK
moisesjpelaez - Physics Private Fields
This commit is contained in:
@ -1,99 +1,99 @@
|
|||||||
package leenkx.logicnode;
|
package leenkx.logicnode;
|
||||||
|
|
||||||
import iron.data.SceneFormat.TSceneFormat;
|
import iron.data.SceneFormat.TSceneFormat;
|
||||||
import iron.data.Data;
|
import iron.data.Data;
|
||||||
import iron.object.Object;
|
import iron.object.Object;
|
||||||
|
|
||||||
class AddParticleToObjectNode extends LogicNode {
|
class AddParticleToObjectNode extends LogicNode {
|
||||||
|
|
||||||
public var property0: String;
|
public var property0: String;
|
||||||
|
|
||||||
public function new(tree: LogicTree) {
|
public function new(tree: LogicTree) {
|
||||||
super(tree);
|
super(tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
override function run(from: Int) {
|
override function run(from: Int) {
|
||||||
#if lnx_particles
|
#if lnx_particles
|
||||||
|
|
||||||
if (property0 == 'Scene Active'){
|
if (property0 == 'Scene Active'){
|
||||||
var objFrom: Object = inputs[1].get();
|
var objFrom: Object = inputs[1].get();
|
||||||
var slot: Int = inputs[2].get();
|
var slot: Int = inputs[2].get();
|
||||||
var objTo: Object = inputs[3].get();
|
var objTo: Object = inputs[3].get();
|
||||||
|
|
||||||
if (objFrom == null || objTo == null) return;
|
if (objFrom == null || objTo == null) return;
|
||||||
|
|
||||||
var mobjFrom = cast(objFrom, iron.object.MeshObject);
|
var mobjFrom = cast(objFrom, iron.object.MeshObject);
|
||||||
|
|
||||||
var psys = mobjFrom.particleSystems != null ? mobjFrom.particleSystems[slot] :
|
var psys = mobjFrom.particleSystems != null ? mobjFrom.particleSystems[slot] :
|
||||||
mobjFrom.particleOwner != null && mobjFrom.particleOwner.particleSystems != null ? mobjFrom.particleOwner.particleSystems[slot] : null;
|
mobjFrom.particleOwner != null && mobjFrom.particleOwner.particleSystems != null ? mobjFrom.particleOwner.particleSystems[slot] : null;
|
||||||
|
|
||||||
if (psys == null) return;
|
if (psys == null) return;
|
||||||
|
|
||||||
var mobjTo = cast(objTo, iron.object.MeshObject);
|
var mobjTo = cast(objTo, iron.object.MeshObject);
|
||||||
|
|
||||||
mobjTo.setupParticleSystem(iron.Scene.active.raw.name, {name: 'LnxPS', seed: 0, particle: psys.r.name});
|
mobjTo.setupParticleSystem(iron.Scene.active.raw.name, {name: 'LnxPS', seed: 0, particle: @:privateAccess psys.r.name});
|
||||||
|
|
||||||
mobjTo.render_emitter = inputs[4].get();
|
mobjTo.render_emitter = inputs[4].get();
|
||||||
|
|
||||||
iron.Scene.active.spawnObject(psys.data.raw.instance_object, null, function(o: Object) {
|
iron.Scene.active.spawnObject(psys.data.raw.instance_object, null, function(o: Object) {
|
||||||
if (o != null) {
|
if (o != null) {
|
||||||
var c: iron.object.MeshObject = cast o;
|
var c: iron.object.MeshObject = cast o;
|
||||||
if (mobjTo.particleChildren == null) mobjTo.particleChildren = [];
|
if (mobjTo.particleChildren == null) mobjTo.particleChildren = [];
|
||||||
mobjTo.particleChildren.push(c);
|
mobjTo.particleChildren.push(c);
|
||||||
c.particleOwner = mobjTo;
|
c.particleOwner = mobjTo;
|
||||||
c.particleIndex = mobjTo.particleChildren.length - 1;
|
c.particleIndex = mobjTo.particleChildren.length - 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var oslot: Int = mobjTo.particleSystems.length-1;
|
var oslot: Int = mobjTo.particleSystems.length-1;
|
||||||
var opsys = mobjTo.particleSystems[oslot];
|
var opsys = mobjTo.particleSystems[oslot];
|
||||||
opsys.setupGeomGpu(mobjTo.particleChildren[oslot], mobjTo);
|
@:privateAccess opsys.setupGeomGpu(mobjTo.particleChildren[oslot], mobjTo);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var sceneName: String = inputs[1].get();
|
var sceneName: String = inputs[1].get();
|
||||||
var objectName: String = inputs[2].get();
|
var objectName: String = inputs[2].get();
|
||||||
var slot: Int = inputs[3].get();
|
var slot: Int = inputs[3].get();
|
||||||
|
|
||||||
var mobjTo: Object = inputs[4].get();
|
var mobjTo: Object = inputs[4].get();
|
||||||
var mobjTo = cast(mobjTo, iron.object.MeshObject);
|
var mobjTo = cast(mobjTo, iron.object.MeshObject);
|
||||||
|
|
||||||
#if lnx_json
|
#if lnx_json
|
||||||
sceneName += ".json";
|
sceneName += ".json";
|
||||||
#elseif lnx_compress
|
#elseif lnx_compress
|
||||||
sceneName += ".lz4";
|
sceneName += ".lz4";
|
||||||
#end
|
#end
|
||||||
|
|
||||||
Data.getSceneRaw(sceneName, (rawScene: TSceneFormat) -> {
|
Data.getSceneRaw(sceneName, (rawScene: TSceneFormat) -> {
|
||||||
|
|
||||||
for (obj in rawScene.objects) {
|
for (obj in rawScene.objects) {
|
||||||
if (obj.name == objectName) {
|
if (obj.name == objectName) {
|
||||||
mobjTo.setupParticleSystem(sceneName, obj.particle_refs[slot]);
|
mobjTo.setupParticleSystem(sceneName, obj.particle_refs[slot]);
|
||||||
mobjTo.render_emitter = inputs[5].get();
|
mobjTo.render_emitter = inputs[5].get();
|
||||||
|
|
||||||
iron.Scene.active.spawnObject(rawScene.particle_datas[slot].instance_object, null, function(o: Object) {
|
iron.Scene.active.spawnObject(rawScene.particle_datas[slot].instance_object, null, function(o: Object) {
|
||||||
if (o != null) {
|
if (o != null) {
|
||||||
var c: iron.object.MeshObject = cast o;
|
var c: iron.object.MeshObject = cast o;
|
||||||
if (mobjTo.particleChildren == null) mobjTo.particleChildren = [];
|
if (mobjTo.particleChildren == null) mobjTo.particleChildren = [];
|
||||||
mobjTo.particleChildren.push(c);
|
mobjTo.particleChildren.push(c);
|
||||||
c.particleOwner = mobjTo;
|
c.particleOwner = mobjTo;
|
||||||
c.particleIndex = mobjTo.particleChildren.length - 1;
|
c.particleIndex = mobjTo.particleChildren.length - 1;
|
||||||
}
|
}
|
||||||
}, true, rawScene);
|
}, true, rawScene);
|
||||||
|
|
||||||
var oslot: Int = mobjTo.particleSystems.length-1;
|
var oslot: Int = mobjTo.particleSystems.length-1;
|
||||||
var opsys = mobjTo.particleSystems[oslot];
|
var opsys = mobjTo.particleSystems[oslot];
|
||||||
opsys.setupGeomGpu(mobjTo.particleChildren[oslot], mobjTo);
|
@:privateAccess opsys.setupGeomGpu(mobjTo.particleChildren[oslot], mobjTo);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
|
||||||
runOutput(0);
|
runOutput(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user