protected void _createLaser() { var laserParams = new SLaserParameters(); laserParams.numBeams = rand.Next(1, 6); if (laserParams.numBeams == 2) { // 2's don't look too great laserParams.numBeams = 1; } laserParams.beamStartPlacementScale = 2f * (float)rand.NextDouble(); laserParams.beamDestSpread = (float)Math.Pow(rand.NextDouble(), 3.0) * laserParams.beamStartPlacementScale; laserParams.backgroundColor = Color4Helper.RandomDebugColor(); laserParams.overlayColor = Color4.White; laserParams.middleInterferenceColor = Color4.White; //laserParams.driftModulationFuncStr = (rand.NextDouble() * 0.1).ToString(); var newLaser = laserManager.addLaser(laserParams, droneObj1, droneObj2); newLaser.sourceTxfm = laserSourceTxfm; newLaser.beamObstacles = new List <SSObject> (); newLaser.beamObstacles.Add(droneObj2); activeLaser.Target = newLaser; }
public SLaser addLaser(SLaserParameters laserParams, SSObject srcObject, SSObject dstObject) { if (_2dEffectRenderer.textureMaterial == null) { _2dEffectRenderer.textureMaterial = new SSTextureMaterial (laserParams.emissionSpritesTexture); } var newLaser = new SLaser (laserParams); //newLaser.intensityEnvelope.sustainDuration = sustainDuration; newLaser.sourceObject = srcObject; newLaser.targetObject = dstObject; var newLaserRuntime = new LaserRuntimeInfo (newLaser, _beamScene3d, _occDiskScene, _2dEffectRenderer); _laserRuntimes.Add (newLaserRuntime); if (laserParams.doLaserBurn) { _laserBurnParticles.particleSystem.addHitSpots(newLaser); } // debug hacks //newLaser.sourceObject = newLaserRuntime.beamRuntimes[0].emissionBillboard; //newLaser.sourceTxfm = Matrix4.Identity; return newLaser; }
public SLaser(SLaserParameters laserParams) { this.parameters = laserParams; this._localIntensityEnvelope = laserParams.intensityEnvelope.Clone(); _beams = new SLaserBeam[parameters.numBeams]; for (int i = 0; i < parameters.numBeams; ++i) { _beams[i] = new SLaserBeam(this, i); } }
public SLaser addLaser(SLaserParameters laserParams, SSObject srcObject, SSObject dstObject, SLaser.TargetVelFunc targetVelFunc = null) { if (_2dEffectRenderer.textureMaterial == null) { _2dEffectRenderer.textureMaterial = new SSTextureMaterial (laserParams.emissionSpritesTexture()); } var newLaser = new SLaser (laserParams, targetVelFunc); newLaser.sourceObject = srcObject; newLaser.targetObject = dstObject; var newLaserRuntime = new LaserRuntimeInfo (newLaser, _beamScene3d, _occDiskScene, _2dEffectRenderer); _laserRuntimes.Add (newLaserRuntime); if (laserParams.doLaserBurn) { SLaserBurnParticlesObject burnRenderer; bool ok = _laserBurnParticleRenderers.TryGetValue(dstObject, out burnRenderer); if (!ok) { burnRenderer = new SLaserBurnParticlesObject (dstObject, _maxBurnParticlesPerObject, null); burnRenderer.Name = "laser manager's laser burn particle system renderer"; burnRenderer.textureMaterial = new SSTextureMaterial(laserParams.laserBurnParticlesTexture()); //_laserBurnParticles.renderMode = SSInstancedMeshRenderer.RenderMode.GpuInstancing; burnRenderer.simulateOnUpdate = false; burnRenderer.simulateOnRender = true; _beamScene3d.AddObject(burnRenderer); _laserBurnParticleRenderers [dstObject] = burnRenderer; } burnRenderer.particleSystem.addHitSpots(newLaser); } // debug hacks //newLaser.sourceObject = newLaserRuntime.beamRuntimes[0].emissionBillboard; //newLaser.sourceTxfm = Matrix4.Identity; return newLaser; }
protected void _createLaser() { var laserParams = new SLaserParameters (); laserParams.numBeams = rand.Next (1, 6); if (laserParams.numBeams == 2) { // 2's don't look too great laserParams.numBeams = 1; } laserParams.beamStartPlacementScale = 2f * (float)rand.NextDouble (); laserParams.beamDestSpread = (float)Math.Pow (rand.NextDouble (), 3.0) * laserParams.beamStartPlacementScale; laserParams.backgroundColor = Color4Helper.RandomDebugColor (); laserParams.overlayColor = Color4.White; laserParams.middleInterferenceColor = Color4.White; var driftScale = (float)rand.NextDouble() * 0.1f; laserParams.driftModulationFunc = (t) => driftScale; var newLaser = laserManager.addLaser (laserParams, droneObj1, droneObj2); newLaser.sourceTxfm = laserSourceTxfm; newLaser.beamObstacles = new List<SSObject> (); newLaser.beamObstacles.Add(droneObj2); activeLaser.Target = newLaser; }