svn merge ^/trunk/blender -r40720:40872
[blender.git] / source / blender / makesrna / intern / rna_speaker.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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * Contributor(s): Jörg Müller.
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 /** \file blender/makesrna/intern/rna_speaker.c
26  *  \ingroup RNA
27  */
28
29
30 #include <stdlib.h>
31
32 #include "RNA_define.h"
33 #include "RNA_enum_types.h"
34
35 #include "rna_internal.h"
36
37 #include "DNA_speaker_types.h"
38 #include "DNA_sound_types.h"
39
40 #ifdef RNA_RUNTIME
41
42 #include "MEM_guardedalloc.h"
43
44 #include "BKE_depsgraph.h"
45 #include "BKE_main.h"
46
47 #include "WM_api.h"
48 #include "WM_types.h"
49
50
51 #else
52
53 static void rna_def_speaker(BlenderRNA *brna)
54 {
55         StructRNA *srna;
56         PropertyRNA *prop;
57
58         srna= RNA_def_struct(brna, "Speaker", "ID");
59         RNA_def_struct_ui_text(srna, "Speaker", "Speaker datablock for 3D audio speaker objects");
60         RNA_def_struct_ui_icon(srna, ICON_SPEAKER);
61
62         prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE);
63         RNA_def_property_boolean_sdna(prop, NULL, "flag", SPK_MUTED);
64         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
65         RNA_def_property_ui_text(prop, "Mute", "Mutes the speaker");
66         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
67
68         /* This shouldn't be changed actually, hiding it!
69         prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
70         RNA_def_property_boolean_sdna(prop, NULL, "flag", SPK_RELATIVE);
71         RNA_def_property_ui_text(prop, "Relative", "Whether the source is relative to the camera or not");
72         // RNA_def_property_update(prop, 0, "rna_Speaker_update");*/
73
74         prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
75         RNA_def_property_pointer_sdna(prop, NULL, "sound");
76         RNA_def_property_struct_type(prop, "Sound");
77         RNA_def_property_flag(prop, PROP_EDITABLE);
78         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
79         RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this speaker");
80         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_sound_set", NULL);
81         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
82
83         prop= RNA_def_property(srna, "volume_max", PROP_FLOAT, PROP_NONE);
84         RNA_def_property_float_sdna(prop, NULL, "volume_max");
85         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
86         RNA_def_property_range(prop, 0.0f, 1.0f);
87         RNA_def_property_ui_text(prop, "Maximum Volume", "Maximum volume, no matter how near the object is");
88         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_max_set", NULL);
89         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
90
91         prop= RNA_def_property(srna, "volume_min", PROP_FLOAT, PROP_NONE);
92         RNA_def_property_float_sdna(prop, NULL, "volume_min");
93         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
94         RNA_def_property_range(prop, 0.0f, 1.0f);
95         RNA_def_property_ui_text(prop, "Minimum Volume", "Minimum volume, no matter how far away the object is");
96         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_min_set", NULL);
97         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
98
99         prop= RNA_def_property(srna, "distance_max", PROP_FLOAT, PROP_NONE);
100         RNA_def_property_float_sdna(prop, NULL, "distance_max");
101         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
102         RNA_def_property_range(prop, 0.0f, FLT_MAX);
103         RNA_def_property_ui_text(prop, "Maximum Distance",
104                                  "Maximum distance for volume calculation, no matter how far away the object is");
105         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_distance_max_set", NULL);
106         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
107
108         prop= RNA_def_property(srna, "distance_reference", PROP_FLOAT, PROP_NONE);
109         RNA_def_property_float_sdna(prop, NULL, "distance_reference");
110         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
111         RNA_def_property_range(prop, 0.0f, FLT_MAX);
112         RNA_def_property_ui_text(prop, "Reference Distance", "Reference distance at which volume is 100 %");
113         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_distance_reference_set", NULL);
114         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
115
116         prop= RNA_def_property(srna, "attenuation", PROP_FLOAT, PROP_NONE);
117         RNA_def_property_float_sdna(prop, NULL, "attenuation");
118         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
119         RNA_def_property_range(prop, 0.0f, FLT_MAX);
120         RNA_def_property_ui_text(prop, "Attenuation", "How strong the distance affects volume, depending on distance model");
121         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_attenuation_set", NULL);
122         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
123
124         prop= RNA_def_property(srna, "cone_angle_outer", PROP_FLOAT, PROP_NONE);
125         RNA_def_property_float_sdna(prop, NULL, "cone_angle_outer");
126         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
127         RNA_def_property_range(prop, 0.0f, 360.0f);
128         RNA_def_property_ui_text(prop, "Outer Cone Angle",
129                                  "Outer angle of the cone in degrees, outside this cone the volume is "
130                                  "the outer cone volume, between inner and outer cone the volume is interpolated");
131         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_angle_outer_set", NULL);
132         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
133
134         prop= RNA_def_property(srna, "cone_angle_inner", PROP_FLOAT, PROP_NONE);
135         RNA_def_property_float_sdna(prop, NULL, "cone_angle_inner");
136         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
137         RNA_def_property_range(prop, 0.0f, 360.0f);
138         RNA_def_property_ui_text(prop, "Inner Cone Angle",
139                                  "Inner angle of the cone in degrees, inside the cone the volume is 100 %");
140         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_angle_inner_set", NULL);
141         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
142
143         prop= RNA_def_property(srna, "cone_volume_outer", PROP_FLOAT, PROP_NONE);
144         RNA_def_property_float_sdna(prop, NULL, "cone_volume_outer");
145         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
146         RNA_def_property_range(prop, 0.0f, 1.0f);
147         RNA_def_property_ui_text(prop, "Outer Cone Volume", "Volume outside the outer cone");
148         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_volume_outer_set", NULL);
149         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
150
151         prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE);
152         RNA_def_property_float_sdna(prop, NULL, "volume");
153         RNA_def_property_range(prop, 0.0f, 1.0f);
154         RNA_def_property_ui_text(prop, "Volume", "How loud the sound is");
155         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_set", NULL);
156         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
157
158         prop= RNA_def_property(srna, "pitch", PROP_FLOAT, PROP_NONE);
159         RNA_def_property_float_sdna(prop, NULL, "pitch");
160         RNA_def_property_range(prop, 0.1f, 10.0f);
161         RNA_def_property_ui_text(prop, "Pitch", "Playback pitch of the sound");
162         // RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_pitch_set", NULL);
163         // RNA_def_property_update(prop, 0, "rna_Speaker_update");
164
165         /* common */
166         rna_def_animdata_common(srna);
167 }
168
169
170 void RNA_def_speaker(BlenderRNA *brna)
171 {
172         rna_def_speaker(brna);
173 }
174
175 #endif
176