Assorted UI tweaks/cleanups
[blender.git] / source / blender / makesrna / intern / rna_world.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * Contributor(s): Blender Foundation (2008).
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 #include <float.h>
26 #include <stdlib.h>
27
28 #include "RNA_define.h"
29 #include "RNA_types.h"
30
31 #include "rna_internal.h"
32
33 #include "DNA_material_types.h"
34 #include "DNA_texture_types.h"
35 #include "DNA_world_types.h"
36
37 #ifdef RNA_RUNTIME
38
39 static PointerRNA rna_World_ambient_occlusion_get(PointerRNA *ptr)
40 {
41         return rna_pointer_inherit_refine(ptr, &RNA_WorldAmbientOcclusion, ptr->id.data);
42 }
43
44 static PointerRNA rna_World_stars_get(PointerRNA *ptr)
45 {
46         return rna_pointer_inherit_refine(ptr, &RNA_WorldStarsSettings, ptr->id.data);
47 }
48
49 static PointerRNA rna_World_mist_get(PointerRNA *ptr)
50 {
51         return rna_pointer_inherit_refine(ptr, &RNA_WorldMistSettings, ptr->id.data);
52 }
53
54 static void rna_World_mtex_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
55 {
56         World *wo= (World*)ptr->data;
57         rna_iterator_array_begin(iter, (void*)wo->mtex, sizeof(MTex*), MAX_MTEX, NULL);
58 }
59
60 static PointerRNA rna_World_active_texture_get(PointerRNA *ptr)
61 {
62         World *wo= (World*)ptr->data;
63
64         return rna_pointer_inherit_refine(ptr, &RNA_TextureSlot, wo->mtex[(int)wo->texact]);
65 }
66
67 #else
68
69 static void rna_def_world_mtex(BlenderRNA *brna)
70 {
71         StructRNA *srna;
72         PropertyRNA *prop;
73
74         static EnumPropertyItem texco_items[] = {
75                 {TEXCO_VIEW, "VIEW", "View", "Uses view vector for the texture coordinates."},
76                 {TEXCO_GLOB, "GLOBAL", "Global", "Uses global coordinates for the texture coordinates (interior mist)."},
77                 {TEXCO_ANGMAP, "ANGMAP", "AngMap", "Uses 360 degree angular coordinates, e.g. for spherical light probes."},
78                 {TEXCO_H_SPHEREMAP, "SPHERE", "Sphere", "For 360 degree panorama sky, spherical mapped, only top half."},
79                 {TEXCO_H_TUBEMAP, "TUBE", "Tube", "For 360 degree panorama sky, cylindrical mapped, only top half."},
80                 {TEXCO_OBJECT, "OBJECT", "Object", "Uses linked object's coordinates for texture coordinates."},
81                 {0, NULL, NULL, NULL}};
82
83         srna= RNA_def_struct(brna, "WorldTextureSlot", "TextureSlot");
84         RNA_def_struct_sdna(srna, "MTex");
85         RNA_def_struct_ui_text(srna, "World Texture Slot", "Texture slot for textures in a World datablock.");
86
87         /* map to */
88         prop= RNA_def_property(srna, "map_to_blend", PROP_BOOLEAN, PROP_NONE);
89         RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_BLEND);
90         RNA_def_property_ui_text(prop, "Map To Blend", "Causes the texture to affect the color progression of the background.");
91
92         prop= RNA_def_property(srna, "map_to_horizon", PROP_BOOLEAN, PROP_NONE);
93         RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_HORIZ);
94         RNA_def_property_ui_text(prop, "Map To Horizon", "Causes the texture to affect the color of the horizon.");
95
96         prop= RNA_def_property(srna, "map_to_zenith_up", PROP_BOOLEAN, PROP_NONE);
97         RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_ZENUP);
98         RNA_def_property_ui_text(prop, "Map To Zenith Up", "Causes the texture to affect the color of the zenith above.");
99
100         prop= RNA_def_property(srna, "map_to_zenith_down", PROP_BOOLEAN, PROP_NONE);
101         RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_ZENDOWN);
102         RNA_def_property_ui_text(prop, "Map To Zenith Down", "Causes the texture to affect the color of the zenith below.");
103
104         /* unused
105         prop= RNA_def_property(srna, "map_to_mist", PROP_BOOLEAN, PROP_NONE);
106         RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_MIST);
107         RNA_def_property_ui_text(prop, "Map To Mist", "Causes the texture to affect the intensity of the mist.");*/
108
109         prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
110         RNA_def_property_enum_sdna(prop, NULL, "texco");
111         RNA_def_property_enum_items(prop, texco_items);
112         RNA_def_property_ui_text(prop, "Texture Coordinates", "Textures coordinates used to map the texture with.");
113
114         prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
115         RNA_def_property_pointer_sdna(prop, NULL, "object");
116         RNA_def_property_struct_type(prop, "Object");
117         RNA_def_property_ui_text(prop, "Object", "Object to use for mapping with Object texture coordinates.");
118 }
119
120 static void rna_def_ambient_occlusion(BlenderRNA *brna)
121 {
122         StructRNA *srna;
123         PropertyRNA *prop;
124
125         static EnumPropertyItem blend_mode_items[] = {
126                 {WO_AOADD, "ADD", "Add", "Add light and shadow."},
127                 {WO_AOSUB, "SUBTRACT", "Subtract", "Subtract light and shadow (needs a normal light to make anything visible.)"},
128                 {WO_AOADDSUB, "BOTH", "Both", "Both lighten and darken."},
129                 {0, NULL, NULL, NULL}};
130
131         static EnumPropertyItem prop_color_items[] = {
132                 {WO_AOPLAIN, "PLAIN", "White", "Plain diffuse energy (white.)"},
133                 {WO_AOSKYCOL, "SKY_COLOR", "Sky Color", "Use horizon and zenith color for diffuse energy."},
134                 {WO_AOSKYTEX, "SKY_TEXTURE", "Sky Texture", "Does full Sky texture render for diffuse energy."},
135                 {0, NULL, NULL, NULL}};
136
137         static EnumPropertyItem prop_sample_method_items[] = {
138                 {WO_AOSAMP_CONSTANT, "CONSTANT_JITTERED", "Constant Jittered", ""},
139                 {WO_AOSAMP_HALTON, "ADAPTIVE_QMC", "Adaptive QMC", "Fast in high-contrast areas."},
140                 {WO_AOSAMP_HAMMERSLEY, "CONSTANT_QMC", "Constant QMC", "Best quality."},
141                 {0, NULL, NULL, NULL}};
142
143         static EnumPropertyItem prop_gather_method_items[] = {
144                 {WO_AOGATHER_RAYTRACE, "RAYTRACE", "Raytrace", "Accurate, but slow when noise-free results are required."},
145                 {WO_AOGATHER_APPROX, "APPROXIMATE", "Approximate", "Inaccurate, but faster and without noise."},
146                 {0, NULL, NULL, NULL}};
147
148         srna= RNA_def_struct(brna, "WorldAmbientOcclusion", NULL);
149         RNA_def_struct_sdna(srna, "World");
150         RNA_def_struct_nested(brna, srna, "World");
151         RNA_def_struct_ui_text(srna, "Ambient Occlusion", "Ambient occlusion settings for a World datablock.");
152
153         prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
154         RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_AMB_OCC);
155         RNA_def_property_ui_text(prop, "Enabled", "");
156
157         prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
158         RNA_def_property_float_sdna(prop, NULL, "aodist");
159         RNA_def_property_ui_text(prop, "Distance", "Length of rays, defines how far away other faces give occlusion effect.");
160
161         prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
162         RNA_def_property_float_sdna(prop, NULL, "aodistfac");
163         RNA_def_property_ui_text(prop, "Strength", "Distance attenuation factor, the higher, the 'shorter' the shadows.");
164
165         prop= RNA_def_property(srna, "energy", PROP_FLOAT, PROP_NONE);
166         RNA_def_property_float_sdna(prop, NULL, "aoenergy");
167         RNA_def_property_ui_range(prop, 0, 10, 0.1, 3);
168         RNA_def_property_ui_text(prop, "Energy", "Global energy scale for ambient occlusion.");
169
170         prop= RNA_def_property(srna, "bias", PROP_FLOAT, PROP_NONE);
171         RNA_def_property_float_sdna(prop, NULL, "aobias");
172         RNA_def_property_range(prop, 0, 0.5);
173         RNA_def_property_ui_text(prop, "Bias", "Bias (in radians) to prevent smoothed faces from showing banding (for Raytrace Constant Jittered).");
174
175         prop= RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
176         RNA_def_property_float_sdna(prop, NULL, "ao_adapt_thresh");
177         RNA_def_property_range(prop, 0, 1);
178         RNA_def_property_ui_text(prop, "Threshold", "Samples below this threshold will be considered fully shadowed/unshadowed and skipped (for Raytrace Adaptive QMC).");
179
180         prop= RNA_def_property(srna, "adapt_to_speed", PROP_FLOAT, PROP_NONE);
181         RNA_def_property_float_sdna(prop, NULL, "ao_adapt_speed_fac");
182         RNA_def_property_range(prop, 0, 1);
183         RNA_def_property_ui_text(prop, "Adapt To Speed", "Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC).");
184
185         prop= RNA_def_property(srna, "error_tolerance", PROP_FLOAT, PROP_NONE);
186         RNA_def_property_float_sdna(prop, NULL, "ao_approx_error");
187         RNA_def_property_range(prop, 0.0001, 10);
188         RNA_def_property_ui_text(prop, "Error Tolerance", "Low values are slower and higher quality (for Approximate).");
189
190         prop= RNA_def_property(srna, "correction", PROP_FLOAT, PROP_NONE);
191         RNA_def_property_float_sdna(prop, NULL, "ao_approx_correction");
192         RNA_def_property_range(prop, 0, 1);
193         RNA_def_property_ui_range(prop, 0, 1, 0.1, 2);
194         RNA_def_property_ui_text(prop, "Correction", "Ad-hoc correction for over-occlusion due to the approximation (for Approximate).");
195
196         prop= RNA_def_property(srna, "falloff", PROP_BOOLEAN, PROP_NONE);
197         RNA_def_property_boolean_sdna(prop, NULL, "aomode", WO_AODIST);
198         RNA_def_property_ui_text(prop, "Falloff", "");
199
200         prop= RNA_def_property(srna, "pixel_cache", PROP_BOOLEAN, PROP_NONE);
201         RNA_def_property_boolean_sdna(prop, NULL, "aomode", WO_AOCACHE);
202         RNA_def_property_ui_text(prop, "Pixel Cache", "Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate).");
203
204         prop= RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
205         RNA_def_property_int_sdna(prop, NULL, "aosamp");
206         RNA_def_property_range(prop, 1, 32);
207         RNA_def_property_ui_text(prop, "Samples", "");
208
209         prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
210         RNA_def_property_enum_sdna(prop, NULL, "aomix");
211         RNA_def_property_enum_items(prop, blend_mode_items);
212         RNA_def_property_ui_text(prop, "Blend Mode", "Blending mode for how AO mixes with material shading.");
213
214         prop= RNA_def_property(srna, "color", PROP_ENUM, PROP_NONE);
215         RNA_def_property_enum_sdna(prop, NULL, "aocolor");
216         RNA_def_property_enum_items(prop, prop_color_items);
217         RNA_def_property_ui_text(prop, "Color", "");
218
219         prop= RNA_def_property(srna, "sample_method", PROP_ENUM, PROP_NONE);
220         RNA_def_property_enum_sdna(prop, NULL, "ao_samp_method");
221         RNA_def_property_enum_items(prop, prop_sample_method_items);
222         RNA_def_property_ui_text(prop, "Sample Method", "Method for generating shadow samples (for Raytrace).");
223
224         prop= RNA_def_property(srna, "gather_method", PROP_ENUM, PROP_NONE);
225         RNA_def_property_enum_sdna(prop, NULL, "ao_gather_method");
226         RNA_def_property_enum_items(prop, prop_gather_method_items);
227         RNA_def_property_ui_text(prop, "Gather Method", "");
228
229         prop= RNA_def_property(srna, "passes", PROP_INT, PROP_NONE);
230         RNA_def_property_int_sdna(prop, NULL, "ao_approx_passes");
231         RNA_def_property_range(prop, 0, 10);
232         RNA_def_property_ui_text(prop, "Passes", "Number of preprocessing passes to reduce overocclusion (for Approximate).");
233 }
234
235 static void rna_def_world_mist(BlenderRNA *brna)
236 {
237         StructRNA *srna;
238         PropertyRNA *prop;
239         
240         static EnumPropertyItem falloff_items[] = {
241                 {0, "QUADRATIC", "Quadratic", "Mist uses quadratic progression."},
242                 {1, "LINEAR", "Linear", "Mist uses linear progression."},
243                 {2, "INVERSE_QUADRATIC", "Inverse Quadratic", "Mist uses inverse quadratic progression."},
244                 {0, NULL, NULL, NULL}};
245
246         srna= RNA_def_struct(brna, "WorldMistSettings", NULL);
247         RNA_def_struct_sdna(srna, "World");
248         RNA_def_struct_nested(brna, srna, "World");
249         RNA_def_struct_ui_text(srna, "World Mist", "Mist settings for a World data-block.");
250
251         prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
252         RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_MIST);
253         RNA_def_property_ui_text(prop, "Enabled", "Enable mist, occluding objects with the environment color as they are further away.");
254
255         prop= RNA_def_property(srna, "intensity", PROP_FLOAT, PROP_NONE);
256         RNA_def_property_float_sdna(prop, NULL, "misi");
257         RNA_def_property_range(prop, 0, 1);
258         RNA_def_property_ui_text(prop, "Intensity", "Intensity of the mist.");
259
260         prop= RNA_def_property(srna, "start", PROP_FLOAT, PROP_NONE);
261         RNA_def_property_float_sdna(prop, NULL, "miststa");
262         RNA_def_property_range(prop, 0, FLT_MAX);
263         RNA_def_property_ui_range(prop, 0, 10000, 10, 2);
264         RNA_def_property_ui_text(prop, "Start", "Starting distance of the mist.");
265
266         prop= RNA_def_property(srna, "depth", PROP_FLOAT, PROP_NONE);
267         RNA_def_property_float_sdna(prop, NULL, "mistdist");
268         RNA_def_property_range(prop, 0, FLT_MAX);
269         RNA_def_property_ui_range(prop, 0, 10000, 10, 2);
270         RNA_def_property_ui_text(prop, "Depth", "Depth of the mist.");
271
272         prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
273         RNA_def_property_float_sdna(prop, NULL, "misthi");
274         RNA_def_property_range(prop, 0, 100);
275         RNA_def_property_ui_text(prop, "Height", "Factor for a less dense mist with increasing height.");
276         
277         prop= RNA_def_property(srna, "falloff", PROP_ENUM, PROP_NONE);
278         RNA_def_property_enum_sdna(prop, NULL, "mistype");
279         RNA_def_property_enum_items(prop, falloff_items);
280         RNA_def_property_ui_text(prop, "Falloff", "Falloff method for mist.");
281 }
282
283 static void rna_def_world_stars(BlenderRNA *brna)
284 {
285         StructRNA *srna;
286         PropertyRNA *prop;
287
288         srna= RNA_def_struct(brna, "WorldStarsSettings", NULL);
289         RNA_def_struct_sdna(srna, "World");
290         RNA_def_struct_nested(brna, srna, "World");
291         RNA_def_struct_ui_text(srna, "World Stars", "Stars setting for a World data-block.");
292
293         prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
294         RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_STARS);
295         RNA_def_property_ui_text(prop, "Enabled", "Enable starfield generation.");
296
297         prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
298         RNA_def_property_float_sdna(prop, NULL, "starsize");
299         RNA_def_property_range(prop, 0, 10);
300         RNA_def_property_ui_text(prop, "Size", "Average screen dimension of stars.");
301
302         prop= RNA_def_property(srna, "min_distance", PROP_FLOAT, PROP_NONE);
303         RNA_def_property_float_sdna(prop, NULL, "starmindist");
304         RNA_def_property_range(prop, 0, 1000);
305         RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance to the camera for stars.");
306
307         prop= RNA_def_property(srna, "average_separation", PROP_FLOAT, PROP_NONE);
308         RNA_def_property_float_sdna(prop, NULL, "stardist");
309         RNA_def_property_range(prop, 2, 1000);
310         RNA_def_property_ui_text(prop, "Average Separation", "Average distance between any two stars.");
311
312         prop= RNA_def_property(srna, "color_randomization", PROP_FLOAT, PROP_NONE);
313         RNA_def_property_float_sdna(prop, NULL, "starcolnoise");
314         RNA_def_property_range(prop, 0, 1);
315         RNA_def_property_ui_text(prop, "Color Randomization", "Randomizes star color.");
316         
317         /* unused
318         prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
319         RNA_def_property_float_sdna(prop, NULL, "starr");
320         RNA_def_property_array(prop, 3);
321         RNA_def_property_ui_text(prop, "Color", "Stars color.");*/
322 }
323
324 void RNA_def_world(BlenderRNA *brna)
325 {
326         StructRNA *srna;
327         PropertyRNA *prop;
328
329         static EnumPropertyItem physics_engine_items[] = {
330                 {WOPHY_NONE, "NONE", "None", ""},
331                 //{WOPHY_ENJI, "ENJI", "Enji", ""},
332                 {WOPHY_SUMO, "SUMO", "Sumo (Deprecated)", ""},
333                 //{WOPHY_DYNAMO, "DYNAMO", "Dynamo", ""},
334                 //{WOPHY_ODE, "ODE", "ODE", ""},
335                 {WOPHY_BULLET, "BULLET", "Bullet", ""},
336                 {0, NULL, NULL, NULL}};
337
338         srna= RNA_def_struct(brna, "World", "ID");
339         RNA_def_struct_ui_text(srna, "World", "World datablock describing the environment and ambient lighting of a scene.");
340
341         rna_def_animdata_common(srna);
342         rna_def_mtex_common(srna, "rna_World_mtex_begin", "rna_World_active_texture_get", "WorldTextureSlot");
343
344         /* colors */
345         prop= RNA_def_property(srna, "horizon_color", PROP_FLOAT, PROP_COLOR);
346         RNA_def_property_float_sdna(prop, NULL, "horr");
347         RNA_def_property_array(prop, 3);
348         RNA_def_property_ui_text(prop, "Horizon Color", "Color at the horizon.");
349
350         prop= RNA_def_property(srna, "zenith_color", PROP_FLOAT, PROP_COLOR);
351         RNA_def_property_float_sdna(prop, NULL, "zenr");
352         RNA_def_property_array(prop, 3);
353         RNA_def_property_ui_text(prop, "Zenith Color", "Color at the zenith.");
354
355         prop= RNA_def_property(srna, "ambient_color", PROP_FLOAT, PROP_COLOR);
356         RNA_def_property_float_sdna(prop, NULL, "ambr");
357         RNA_def_property_array(prop, 3);
358         RNA_def_property_ui_text(prop, "Ambient Color", "");
359
360         /* exp, range */
361         prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE);
362         RNA_def_property_float_sdna(prop, NULL, "exp");
363         RNA_def_property_range(prop, 0.0, 1.0);
364         RNA_def_property_ui_text(prop, "Exposure", "Amount of exponential color correction for light.");
365
366         prop= RNA_def_property(srna, "range", PROP_FLOAT, PROP_NONE);
367         RNA_def_property_float_sdna(prop, NULL, "range");
368         RNA_def_property_range(prop, 0.2, 5.0);
369         RNA_def_property_ui_text(prop, "Range", "The color amount that will be mapped on color 1.0.");
370
371         /* sky type */
372         prop= RNA_def_property(srna, "blend_sky", PROP_BOOLEAN, PROP_NONE);
373         RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYBLEND);
374         RNA_def_property_ui_text(prop, "Blend Sky", "Renders background with natural progression from horizon to zenith.");
375
376         prop= RNA_def_property(srna, "paper_sky", PROP_BOOLEAN, PROP_NONE);
377         RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYPAPER);
378         RNA_def_property_ui_text(prop, "Paper Sky", "Flattens blend or texture coordinates.");
379
380         prop= RNA_def_property(srna, "real_sky", PROP_BOOLEAN, PROP_NONE);
381         RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYREAL);
382         RNA_def_property_ui_text(prop, "Real Sky", "Renders background with a real horizon.");
383
384         /* physics */
385         prop= RNA_def_property(srna, "physics_engine", PROP_ENUM, PROP_NONE);
386         RNA_def_property_enum_sdna(prop, NULL, "physicsEngine");
387         RNA_def_property_enum_items(prop, physics_engine_items);
388         RNA_def_property_ui_text(prop, "Physics Engine", "Physics engine used for physics simulation in the game engine.");
389
390         prop= RNA_def_property(srna, "physics_gravity", PROP_FLOAT, PROP_NONE);
391         RNA_def_property_float_sdna(prop, NULL, "gravity");
392         RNA_def_property_range(prop, 0.0, 25.0);
393         RNA_def_property_ui_text(prop, "Physics Gravity", "Gravitational constant used for physics simulation in the game engine.");
394
395         /* nested structs */
396         prop= RNA_def_property(srna, "ambient_occlusion", PROP_POINTER, PROP_NEVER_NULL);
397         RNA_def_property_struct_type(prop, "WorldAmbientOcclusion");
398         RNA_def_property_pointer_funcs(prop, "rna_World_ambient_occlusion_get", NULL);
399         RNA_def_property_ui_text(prop, "Ambient Occlusion", "World ambient occlusion settings.");
400
401         prop= RNA_def_property(srna, "mist", PROP_POINTER, PROP_NEVER_NULL);
402         RNA_def_property_struct_type(prop, "WorldMistSettings");
403         RNA_def_property_pointer_funcs(prop, "rna_World_mist_get", NULL);
404         RNA_def_property_ui_text(prop, "Mist", "World mist settings.");
405
406         prop= RNA_def_property(srna, "stars", PROP_POINTER, PROP_NEVER_NULL);
407         RNA_def_property_struct_type(prop, "WorldStarsSettings");
408         RNA_def_property_pointer_funcs(prop, "rna_World_stars_get", NULL);
409         RNA_def_property_ui_text(prop, "Stars", "World stars settings.");
410
411         prop= RNA_def_property(srna, "script_link", PROP_POINTER, PROP_NEVER_NULL);
412         RNA_def_property_pointer_sdna(prop, NULL, "scriptlink");
413         RNA_def_property_ui_text(prop, "Script Link", "Scripts linked to this object.");
414
415         rna_def_ambient_occlusion(brna);
416         rna_def_world_mist(brna);
417         rna_def_world_stars(brna);
418         rna_def_world_mtex(brna);
419 }
420
421 #endif
422