Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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;
        }
Example #5
0
        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;
        }