//Photon emitter engine
    void executePhotonEmitters()
    {
        Random.seed = 0;
        for (int t = 0; t < objects.getNumberOfObjectTypes(); t++)
        {
            for (int i = 0; i < objects.getObjectsPerType(t); i++)
            {
                photonMap.photonsPerObject [t] [i] = 0;
            }
        }

        float tempX;
        float tempY;
        int   xPoint;
        int   yPoint;
        float maxX = -100f;
        float minX = 100f;
        float maxY = -100f;
        float minY = 100;

        for (int i = 0; i < photonMap.numberOfPhotons; i++)
        {
            int     bounces  = 1;
            float[] color    = { 1.0f, 1.0f, 1.0f };
            float[] ray      = normalize3(randomThree(1.0f));
            float[] oldPoint = lightSource;

            while (oldPoint [1] >= lightSource [1])
            {
                oldPoint = additionXYZ(lightSource, multiplyThree(normalize3(randomThree(1.0f)), 0.75f));
            }
            if (abs(oldPoint [0]) > 1.5 || abs(oldPoint [1]) > 1.2f ||
                findSqureDistance(oldPoint, objects.getSphereObject(0), objects.getSphereData(0, 3) * objects.getSphereData(0, 3)))
            {
                bounces = photonMap.getNumberOfBounces() + 1;
            }

            raytrace(ray, oldPoint);

            while (variableUtils.getIntersect() && bounces <= photonMap.getNumberOfBounces())
            {
                variableUtils.setPoint(additionXYZ(multiplyThree(ray, variableUtils.getDistance()), oldPoint));
                color = multiplyThree(recieveColorFromObject(color, variableUtils.getType(), variableUtils.getIndex()), 1.0f / Mathf.Sqrt(bounces));
                savePhotonHitData(variableUtils.getType(), variableUtils.getIndex(), variableUtils.getPoint(), ray, color);

                mapShadowPhoton(ray);
                ray = bounceOnNormal(ray, oldPoint);
                raytrace(ray, variableUtils.getPoint());
                oldPoint = variableUtils.getPoint();

                bounces++;
            }
        }
    }