Example #1
0
void __cdecl volTransformThreadFunction (void *pExpandDlgParam)
{
    int nStatus;
    EXPAND_VOL_THREAD_PARAMS *pParam=(EXPAND_VOL_THREAD_PARAMS *)pExpandDlgParam;
    HWND hwndDlg = (HWND) pParam->hwndDlg;

    nStatus = ExpandVolume (hwndDlg, (wchar_t*)pParam->szVolumeName, pParam->pVolumePassword,
                            pParam->VolumePkcs5, pParam->VolumePim, pParam->newSize, pParam->bInitFreeSpace );

    if (nStatus!=ERR_SUCCESS && nStatus!=ERR_USER_ABORT)
        handleError (hwndDlg, nStatus, SRC_POS);

    bVolTransformThreadCancel = FALSE;

    PostMessage (hwndDlg, TC_APPMSG_VOL_TRANSFORM_THREAD_ENDED, 0, nStatus);

    _endthread ();
}
Example #2
0
/*
=============
R_AddShadowCaster

Polygons must be added in front to back order!
=============
*/
svnode_t *R_AddShadowCaster(svnode_t *node, vec3_t *v, int vnum, msurface_t *surf,int depth) {

    int sign;
    int	signs[MAX_POLY_VERT],signs2[MAX_POLY_VERT];
    vec3_t v1[MAX_POLY_VERT],v2[MAX_POLY_VERT];
    int vnum1,vnum2;
    int i;

    if (depth > 1500) {
        Con_Printf("to deep\n");
        return NULL;
    }

    if (vnum == 0) return NULL;


    sign = 0;
    for (i=0; i<vnum; i++) {
        sign |= signs[i] = Epsilon_Sign (DotProduct (v[i], node->splitplane->normal)- node->splitplane->dist);
    }

    if (sign == 1) {

        if (node->children[0] != NULL) {

            R_AddShadowCaster (node->children[0], v, vnum, surf, depth+1);
        } else {

            svBsp_NumCutPolys++;
        }


    } else if (sign == 2) {


        if (node->children[1] != NULL) {


            R_AddShadowCaster (node->children[1], v, vnum, surf, depth+1);
        } else {

            node->children[1] = ExpandVolume(v, signs, vnum, surf);

            if (surf->visframe != r_lightTimestamp) {
                //Store it out as visible
                surf->shadowchain = shadowchain;
                surf->visframe = r_lightTimestamp;
                surf->polys->lightTimestamp = r_lightTimestamp;
                shadowchain = surf;
                svBsp_NumKeptPolys++;
            }
        }

    } else if (sign == 3) {


        SplitPolygon(&v[0], &signs[0], vnum, node->splitplane, &v1[0], &vnum1, &v2[0], &vnum2);

        if (node->children[0] != NULL) {

            R_AddShadowCaster (node->children[0], v1, vnum1, surf, depth+1);

        } else {

            svBsp_NumCutPolys++;

        }


        if (vnum2 == 0) return NULL;

        if (node->children[1] != NULL) {

            R_AddShadowCaster (node->children[1], v2, vnum2, surf, depth+1);
        } else {

            node->children[1] = ExpandVolume (v2, signs2, vnum2, surf);

            if (surf->visframe != r_lightTimestamp) {
                //Store it out as visible
                surf->shadowchain = shadowchain;
                surf->visframe = r_lightTimestamp;
                surf->polys->lightTimestamp = r_lightTimestamp;
                shadowchain = surf;
                svBsp_NumKeptPolys++;
            }
        }
    }
    return NULL;
}