66cc9919f957e2dc9f8a9b85cd0a7514e831d882
[blender.git] / source / blender / makesrna / intern / rna_speaker.c
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16
17 /** \file \ingroup RNA
18  */
19
20
21 #include <stdlib.h>
22
23 #include "RNA_define.h"
24 #include "RNA_enum_types.h"
25
26 #include "rna_internal.h"
27
28 #include "DNA_speaker_types.h"
29 #include "DNA_sound_types.h"
30
31 #include "BLT_translation.h"
32
33 #ifdef RNA_RUNTIME
34
35 #include "MEM_guardedalloc.h"
36
37 #include "BKE_main.h"
38
39 #include "WM_api.h"
40 #include "WM_types.h"
41
42 #else
43
44 static void rna_def_speaker(BlenderRNA *brna)
45 {
46         StructRNA *srna;
47         PropertyRNA *prop;
48
49         srna = RNA_def_struct(brna, "Speaker", "ID");
50         RNA_def_struct_ui_text(srna, "Speaker", "Speaker data-block for 3D audio speaker objects");
51         RNA_def_struct_ui_icon(srna, ICON_SPEAKER);
52
53         prop = RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE);
54         RNA_def_property_boolean_sdna(prop, NULL, "flag", SPK_MUTED);
55         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
56         RNA_def_property_ui_text(prop, "Mute", "Mute the speaker");
57         RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_SOUND);
58         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
59
60         prop = RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
61         RNA_def_property_boolean_sdna(prop, NULL, "flag", SPK_RELATIVE);
62         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
63         RNA_def_property_ui_text(prop, "Relative", "Whether the source is relative to the camera or not");
64         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
65
66         prop = RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
67         RNA_def_property_struct_type(prop, "Sound");
68         RNA_def_property_flag(prop, PROP_EDITABLE);
69         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
70         RNA_def_property_ui_text(prop, "Sound", "Sound data-block used by this speaker");
71         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_sound_set", NULL); */
72         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
73
74         prop = RNA_def_property(srna, "volume_max", PROP_FLOAT, PROP_NONE);
75         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
76         RNA_def_property_range(prop, 0.0f, 1.0f);
77         RNA_def_property_ui_text(prop, "Maximum Volume", "Maximum volume, no matter how near the object is");
78         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_max_set", NULL); */
79         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
80
81         prop = RNA_def_property(srna, "volume_min", PROP_FLOAT, PROP_NONE);
82         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
83         RNA_def_property_range(prop, 0.0f, 1.0f);
84         RNA_def_property_ui_text(prop, "Minimum Volume", "Minimum volume, no matter how far away the object is");
85         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_min_set", NULL); */
86         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
87
88         prop = RNA_def_property(srna, "distance_max", PROP_FLOAT, PROP_NONE);
89         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
90         RNA_def_property_range(prop, 0.0f, FLT_MAX);
91         RNA_def_property_ui_text(prop, "Maximum Distance",
92                                  "Maximum distance for volume calculation, no matter how far away the object is");
93         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_distance_max_set", NULL); */
94         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
95
96         prop = RNA_def_property(srna, "distance_reference", PROP_FLOAT, PROP_NONE);
97         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
98         RNA_def_property_range(prop, 0.0f, FLT_MAX);
99         RNA_def_property_ui_text(prop, "Reference Distance", "Reference distance at which volume is 100 %");
100         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_distance_reference_set", NULL); */
101         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
102
103         prop = RNA_def_property(srna, "attenuation", PROP_FLOAT, PROP_NONE);
104         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
105         RNA_def_property_range(prop, 0.0f, FLT_MAX);
106         RNA_def_property_ui_text(prop, "Attenuation", "How strong the distance affects volume, depending on distance model");
107         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_attenuation_set", NULL); */
108         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
109
110         prop = RNA_def_property(srna, "cone_angle_outer", PROP_FLOAT, PROP_NONE);
111         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
112         RNA_def_property_range(prop, 0.0f, 360.0f);
113         RNA_def_property_ui_text(prop, "Outer Cone Angle",
114                                  "Angle of the outer cone, in degrees, outside this cone the volume is "
115                                  "the outer cone volume, between inner and outer cone the volume is interpolated");
116         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_angle_outer_set", NULL); */
117         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
118
119         prop = RNA_def_property(srna, "cone_angle_inner", PROP_FLOAT, PROP_NONE);
120         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
121         RNA_def_property_range(prop, 0.0f, 360.0f);
122         RNA_def_property_ui_text(prop, "Inner Cone Angle",
123                                  "Angle of the inner cone, in degrees, inside the cone the volume is 100 %");
124         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_angle_inner_set", NULL); */
125         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
126
127         prop = RNA_def_property(srna, "cone_volume_outer", PROP_FLOAT, PROP_NONE);
128         RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
129         RNA_def_property_range(prop, 0.0f, 1.0f);
130         RNA_def_property_ui_text(prop, "Outer Cone Volume", "Volume outside the outer cone");
131         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_cone_volume_outer_set", NULL); */
132         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
133
134         prop = RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE);
135         RNA_def_property_range(prop, 0.0f, 1.0f);
136         RNA_def_property_ui_text(prop, "Volume", "How loud the sound is");
137         RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_SOUND);
138         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_volume_set", NULL); */
139         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
140
141         prop = RNA_def_property(srna, "pitch", PROP_FLOAT, PROP_NONE);
142         RNA_def_property_range(prop, 0.1f, 10.0f);
143         RNA_def_property_ui_text(prop, "Pitch", "Playback pitch of the sound");
144         RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_SOUND);
145         /* RNA_def_property_float_funcs(prop, NULL, "rna_Speaker_pitch_set", NULL); */
146         /* RNA_def_property_update(prop, 0, "rna_Speaker_update"); */
147
148         /* common */
149         rna_def_animdata_common(srna);
150 }
151
152
153 void RNA_def_speaker(BlenderRNA *brna)
154 {
155         rna_def_speaker(brna);
156 }
157
158 #endif