X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=r_shadow.c;h=bce2643997ffe11273838672f95ecddca595abce;hb=bce4204c780051d1db25c6fef768315b4c217dd4;hp=ef1190c29d2737ba7e32eb628860eed7f9408ce3;hpb=f97dd97265228d5ffeab5027c445a0f3cf43939c;p=xonotic%2Fdarkplaces.git diff --git a/r_shadow.c b/r_shadow.c index ef1190c2..bce26439 100644 --- a/r_shadow.c +++ b/r_shadow.c @@ -205,11 +205,10 @@ int c_rtcached_shadowmeshes, c_rtcached_shadowtris; float r_shadow_attenpower, r_shadow_attenscale; -float varray_vertex3f2[65536*3]; - rtlight_t *r_shadow_compilingrtlight; dlight_t *r_shadow_worldlightchain; dlight_t *r_shadow_selectedlight; +dlight_t r_shadow_bufferlight; vec3_t r_editlights_cursorlocation; rtexture_t *lighttextures[5]; @@ -392,7 +391,7 @@ void R_Shadow_Init(void) } Cmd_AddCommand("r_shadow_help", R_Shadow_Help_f); R_Shadow_EditLights_Init(); - r_shadow_mempool = Mem_AllocPool("R_Shadow"); + r_shadow_mempool = Mem_AllocPool("R_Shadow", 0, NULL); r_shadow_worldlightchain = NULL; maxshadowelements = 0; shadowelements = NULL; @@ -3195,6 +3194,12 @@ void R_Shadow_EditLights_EditAll_f(void) { dlight_t *light; + if (!r_editlights.integer) + { + Con_Print("Cannot edit lights when not in editing mode. Set r_editlights to 1.\n"); + return; + } + for (light = r_shadow_worldlightchain;light;light = light->next) { R_Shadow_SelectLight(light); @@ -3321,6 +3326,49 @@ void R_Shadow_EditLights_Help_f(void) ); } +void R_Shadow_EditLights_CopyInfo_f(void) +{ + if (!r_editlights.integer) + { + Con_Print("Cannot copy light info when not in editing mode. Set r_editlights to 1.\n"); + return; + } + if (!r_shadow_selectedlight) + { + Con_Print("No selected light.\n"); + return; + } + VectorCopy(r_shadow_selectedlight->angles, r_shadow_bufferlight.angles); + VectorCopy(r_shadow_selectedlight->color, r_shadow_bufferlight.color); + r_shadow_bufferlight.radius = r_shadow_selectedlight->radius; + r_shadow_bufferlight.style = r_shadow_selectedlight->style; + if (r_shadow_selectedlight->cubemapname) + strcpy(r_shadow_bufferlight.cubemapname, r_shadow_selectedlight->cubemapname); + else + r_shadow_bufferlight.cubemapname[0] = 0; + r_shadow_bufferlight.shadow = r_shadow_selectedlight->shadow; + r_shadow_bufferlight.corona = r_shadow_selectedlight->corona; +} + +void R_Shadow_EditLights_PasteInfo_f(void) +{ + vec3_t origin; + if (!r_editlights.integer) + { + Con_Print("Cannot paste light info when not in editing mode. Set r_editlights to 1.\n"); + return; + } + if (!r_shadow_selectedlight) + { + Con_Print("No selected light.\n"); + return; + } + VectorCopy(r_shadow_selectedlight->origin, origin); + R_Shadow_FreeWorldLight(r_shadow_selectedlight); + r_shadow_selectedlight = NULL; + R_Shadow_NewWorldLight(origin, r_shadow_bufferlight.angles, r_shadow_bufferlight.color, r_shadow_bufferlight.radius, r_shadow_bufferlight.corona, r_shadow_bufferlight.style, r_shadow_bufferlight.shadow, r_shadow_bufferlight.cubemapname); +} + void R_Shadow_EditLights_Init(void) { Cvar_RegisterVariable(&r_editlights); @@ -3343,5 +3391,7 @@ void R_Shadow_EditLights_Init(void) Cmd_AddCommand("r_editlights_togglecorona", R_Shadow_EditLights_ToggleCorona_f); Cmd_AddCommand("r_editlights_importlightentitiesfrommap", R_Shadow_EditLights_ImportLightEntitiesFromMap_f); Cmd_AddCommand("r_editlights_importlightsfile", R_Shadow_EditLights_ImportLightsFile_f); + Cmd_AddCommand("r_editlights_copyinfo", R_Shadow_EditLights_CopyInfo_f); + Cmd_AddCommand("r_editlights_pasteinfo", R_Shadow_EditLights_PasteInfo_f); }