[Bf-blender-cvs] [befd87ac624] blender2.8: StudioLights: API
Jeroen Bakker
noreply at git.blender.org
Fri Jun 22 16:24:29 CEST 2018
Commit: befd87ac6249f355e2b86768259dc69209393255
Author: Jeroen Bakker
Date: Fri Jun 22 16:22:36 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBbefd87ac6249f355e2b86768259dc69209393255
StudioLights: API
- get spherical harmonics coefficients
===================================================================
M source/blender/makesrna/intern/rna_userdef.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 033e7bee72c..e4bedf53d72 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -36,6 +36,7 @@
#include "BLI_utildefines.h"
#include "BLI_math_base.h"
+#include "BLI_math_vector.h"
#include "BKE_appdir.h"
#include "BKE_DerivedMesh.h"
@@ -714,26 +715,40 @@ static int rna_UserDef_studiolight_path_length(PointerRNA *ptr)
static void rna_UserDef_studiolight_path_irr_cache_get(PointerRNA *ptr, char *value)
{
StudioLight *sl = (StudioLight *)ptr->data;
- BLI_strncpy(value, sl->path_irr_cache, FILE_MAX);
+ if (sl->path_irr_cache) {
+ BLI_strncpy(value, sl->path_irr_cache, FILE_MAX);
+ }
+ value[0] = 0x00;
}
static int rna_UserDef_studiolight_path_irr_cache_length(PointerRNA *ptr)
{
StudioLight *sl = (StudioLight *)ptr->data;
- return strlen(sl->path_irr_cache);
+ if (sl->path_irr_cache)
+ {
+ return strlen(sl->path_irr_cache);
+ }
+ return 0;
}
/* StudioLight.path_sh_cache */
static void rna_UserDef_studiolight_path_sh_cache_get(PointerRNA *ptr, char *value)
{
StudioLight *sl = (StudioLight *)ptr->data;
- BLI_strncpy(value, sl->path_sh_cache, FILE_MAX);
+ if (sl->path_sh_cache) {
+ BLI_strncpy(value, sl->path_sh_cache, FILE_MAX);
+ }
+ value[0] = 0x00;
}
static int rna_UserDef_studiolight_path_sh_cache_length(PointerRNA *ptr)
{
StudioLight *sl = (StudioLight *)ptr->data;
- return strlen(sl->path_sh_cache);
+ if (sl->path_sh_cache)
+ {
+ return strlen(sl->path_sh_cache);
+ }
+ return 0;
}
/* StudioLight.index */
@@ -758,11 +773,17 @@ static int rna_UserDef_studiolight_orientation_get(PointerRNA *ptr)
return sl->flag & STUDIOLIGHT_FLAG_ORIENTATIONS;
}
-static void rna_UserDef_studiolight_orientation_set(PointerRNA *UNUSED(ptr), const int UNUSED(value))
+static void rna_UserDef_studiolight_spherical_harmonics_coefficients_get(PointerRNA *ptr, float *values)
{
+ StudioLight *sl = (StudioLight *)ptr->data;
+ float *value = values;
+ for (int i = 0; i < STUDIOLIGHT_SPHERICAL_HARMONICS_COMPONENTS; i++)
+ {
+ copy_v3_v3(value, sl->spherical_harmonics_coefs[i]);
+ value += 3;
+ }
}
-
#else
/* TODO(sergey): This technically belongs to blenlib, but we don't link
@@ -3321,7 +3342,8 @@ static void rna_def_userdef_studiolight(BlenderRNA *brna)
prop = RNA_def_property(srna, "orientation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, rna_enum_studio_light_orientation_items);
- RNA_def_property_enum_funcs(prop, "rna_UserDef_studiolight_orientation_get", "rna_UserDef_studiolight_orientation_set", NULL);
+ RNA_def_property_enum_funcs(prop, "rna_UserDef_studiolight_orientation_get", NULL, NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Orientation", "");
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
@@ -3345,8 +3367,13 @@ static void rna_def_userdef_studiolight(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "SH Cache Path", "Path where the spherical harmonics cache is stored");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_define_verify_sdna(true);
+ const int spherical_harmonics_dim[] = {STUDIOLIGHT_SPHERICAL_HARMONICS_COMPONENTS, 3};
+ prop = RNA_def_property(srna, "spherical_harmonics_coefficients", PROP_FLOAT, PROP_COLOR);
+ RNA_def_property_multi_array(prop, 2, spherical_harmonics_dim);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_float_funcs(prop, "rna_UserDef_studiolight_spherical_harmonics_coefficients_get", NULL, NULL);
+ RNA_define_verify_sdna(true);
}
static void rna_def_userdef_pathcompare(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list