mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 20:56:52 +02:00
dynamic lifetimes for particle systems
This commit is contained in:
parent
a5c19c04e5
commit
b7d0a75f25
1 changed files with 32 additions and 2 deletions
|
@ -56,7 +56,6 @@ var LINE_ENTITY_DIMENSIONS = {
|
||||||
|
|
||||||
var LINE_LENGTH = 500;
|
var LINE_LENGTH = 500;
|
||||||
var PICK_MAX_DISTANCE = 500; // max length of pick-ray
|
var PICK_MAX_DISTANCE = 500; // max length of pick-ray
|
||||||
|
|
||||||
//
|
//
|
||||||
// near grabbing
|
// near grabbing
|
||||||
//
|
//
|
||||||
|
@ -129,6 +128,7 @@ var USE_PARTICLE_BEAM_FOR_SEARCHING = true;
|
||||||
var USE_ENTITY_LINES_FOR_MOVING = false;
|
var USE_ENTITY_LINES_FOR_MOVING = false;
|
||||||
var USE_OVERLAY_LINES_FOR_MOVING = false;
|
var USE_OVERLAY_LINES_FOR_MOVING = false;
|
||||||
var USE_PARTICLE_BEAM_FOR_MOVING = true;
|
var USE_PARTICLE_BEAM_FOR_MOVING = true;
|
||||||
|
var TEMPORARY_PARTICLE_BEAM_LIFETIME = 30;
|
||||||
|
|
||||||
var USE_SPOTLIGHT = false;
|
var USE_SPOTLIGHT = false;
|
||||||
var USE_POINTLIGHT = false;
|
var USE_POINTLIGHT = false;
|
||||||
|
@ -549,6 +549,14 @@ function MyController(hand) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.renewParticleBeamLifetime = function(){
|
||||||
|
var props = Entities.getEntityProperties(this.particleBeam,"age");
|
||||||
|
Entities.editEntity(this.particleBeam,{
|
||||||
|
lifetime: TEMPORARY_PARTICLE_BEAM_LIFETIME + props.age // renew lifetime
|
||||||
|
})
|
||||||
|
var lifetime = Entities.getEntityProperties(this.particleBeam,"lfietime").lifetime;
|
||||||
|
}
|
||||||
|
|
||||||
this.evalLightWorldTransform = function(modelPos, modelRot) {
|
this.evalLightWorldTransform = function(modelPos, modelRot) {
|
||||||
|
|
||||||
var MODEL_LIGHT_POSITION = {
|
var MODEL_LIGHT_POSITION = {
|
||||||
|
@ -1803,4 +1811,26 @@ function cleanup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Script.scriptEnding.connect(cleanup);
|
Script.scriptEnding.connect(cleanup);
|
||||||
Script.update.connect(update);
|
Script.update.connect(update);
|
||||||
|
|
||||||
|
// particle systems can end up hanging around if a user crashes or something else causes controller cleanup not to get called.
|
||||||
|
// we can't create the search system on-demand since it takes some time for the particles to reach their entire length.
|
||||||
|
// thus the system cannot have a fixed lifetime. this loop updates the lifetimes and will stop updating if a user crashes.
|
||||||
|
|
||||||
|
if(USE_PARTICLE_BEAM_FOR_SEARCHING===true || USE_PARTICLE_BEAM_FOR_SEARCHING ===true){
|
||||||
|
Script.update.connect(renewParticleBeamLifetimes)
|
||||||
|
}
|
||||||
|
|
||||||
|
var sinceLastParticleLifetimeUpdate = 0;
|
||||||
|
|
||||||
|
function renewParticleBeamLifetimes(deltaTime) {
|
||||||
|
//debounce this call since we don't want it 60x a second
|
||||||
|
sinceLastParticleLifetimeUpdate = sinceLastParticleLifetimeUpdate + deltaTime;
|
||||||
|
if (sinceLastParticleLifetimeUpdate > TEMPORARY_PARTICLE_BEAM_LIFETIME - 10) {
|
||||||
|
sinceLastParticleLifetimeUpdate = 0;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rightController.renewParticleBeamLifetime();
|
||||||
|
leftController.renewParticleBeamLifetime();
|
||||||
|
}
|
Loading…
Reference in a new issue