public void EmitParticle(FakeParticle target)
    {
        liveParticles = Mathf.Min(maxParticles, liveParticles + 1);

        target.live             = true;
        target.renderer.enabled = true;

        Vector3 offset = Vector3.Scale(Random.insideUnitSphere, area);

        if (offset.magnitude < minEmitterRange)
        {
            offset = offset.normalized * minEmitterRange;
        }
        target.transform.position = transform.position + offset;

        target.transform.localScale = Vector3.one * minSize;
        target.energy = Random.Range(minEnergy, maxEnergy);

        target.velocity      = worldVelocity + Vector3.Scale(RandomF.insideUnitCube, randomVelocity);
        target.localVelocity = localVelocity + Vector3.Scale(RandomF.insideUnitCube, randomLocalVelocity);
        target.force         = force + Vector3.Scale(RandomF.insideUnitCube, randomForce);

        target.angularVelocity = angularVelocity + (-.5f + Random.value) * randomAngularVelocity;
        if (randomRotation)
        {
            target.rotation = Random.value * 360;
        }
    }
    FakeParticle MakeParticle()
    {
        GameObject   obj      = new GameObject("Particle");
        FakeParticle particle = obj.AddComponent <FakeParticle>() as FakeParticle;

        particle.system           = this;
        particle.live             = false;
        particle.transform.parent = transform;
        particle.billboard        = obj.AddComponent <Billboard>();

        //deadParticles.Enqueue(particle);

        obj.AddComponent <MeshFilter>().mesh       = mesh;
        obj.AddComponent <MeshRenderer>().material = material;
        obj.renderer.enabled = false;

        return(particle);
    }
	public void EmitParticle(FakeParticle target) {
		liveParticles = Mathf.Min(maxParticles, liveParticles + 1);
		
		target.live = true;
		target.renderer.enabled = true;
		
		Vector3 offset = Vector3.Scale(Random.insideUnitSphere, area);
		if (offset.magnitude < minEmitterRange) { offset = offset.normalized * minEmitterRange; }
		target.transform.position = transform.position + offset;
		
		target.transform.localScale = Vector3.one * minSize;
		target.energy = Random.Range(minEnergy, maxEnergy);
		
		target.velocity = worldVelocity + Vector3.Scale(RandomF.insideUnitCube, randomVelocity);
		target.localVelocity = localVelocity + Vector3.Scale(RandomF.insideUnitCube, randomLocalVelocity);
		target.force = force + Vector3.Scale(RandomF.insideUnitCube, randomForce);
		
		target.angularVelocity = angularVelocity + (-.5f + Random.value) * randomAngularVelocity;
		if (randomRotation) { target.rotation = Random.value * 360; }
		
		
		
		
	}