#include "light_impl.h" #include "node_impl.h" #include "scene_memory.h" #include static void make_environment_light( Light* light, const EnvironmentLightDesc* desc) { assert(light); assert(desc); light->type = EnvironmentLightType; light->environment.environment_map = desc->environment_map; } Light* gfx_make_light(const LightDesc* desc) { assert(desc); Light* light = mem_alloc_light(); switch (desc->type) { case EnvironmentLightType: make_environment_light(light, &desc->light.environment); break; default: log_error("Unhandled light type"); gfx_destroy_light(&light); return 0; } return light; } void gfx_destroy_light(Light** light) { assert(light); if (*light) { if ((*light)->parent.val) { gfx_del_node((*light)->parent); } mem_free_light(light); } }