RNA: ID properties were not being shown as RNA properties anymore, fixed.
[blender.git] / source / blender / makesrna / intern / rna_sound.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): Campbell Barton, Roland Hess
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 #include <stdlib.h>
26
27 #include "RNA_define.h"
28 #include "RNA_types.h"
29
30 #include "rna_internal.h"
31
32 #include "DNA_sound_types.h"
33 #include "DNA_property_types.h"
34
35 #ifdef RNA_RUNTIME
36
37 #else
38
39 /* sample and listener are internal .. */
40
41 #if 0
42 static void rna_def_sample(BlenderRNA *brna)
43 {
44         StructRNA *srna;
45         PropertyRNA *prop;
46
47         /* sound types */
48         static EnumPropertyItem prop_sample_type_items[] = {
49                 {SAMPLE_INVALID, "INVALID", "Invalid", ""},
50                 {SAMPLE_UNKNOWN, "UNKNOWN", "Unknown", ""},
51                 {SAMPLE_RAW, "RAW", "Raw", ""},
52                 {SAMPLE_WAV, "WAV", "WAV", "Uncompressed"},
53                 {SAMPLE_MP2, "MP2", "MP2", "MPEG-1 Audio Layer 2"},
54                 {SAMPLE_MP3, "MP3", "MP3", "MPEG-1 Audio Layer 3"},
55                 {SAMPLE_OGG_VORBIS, "OGG_VORBIS", "Ogg Vorbis", ""},
56                 {SAMPLE_WMA, "WMA", "WMA", "Windows Media Audio"},
57                 {SAMPLE_ASF, "ASF", "ASF", "Windows Advanced Systems Format"},
58                 {SAMPLE_AIFF, "AIFF", "AIFF", "Audio Interchange File Format"},
59                 {0, NULL, NULL, NULL}};
60         
61         srna= RNA_def_struct(brna, "SoundSample", "ID");
62         RNA_def_struct_sdna(srna, "bSample");
63         RNA_def_struct_ui_text(srna, "SoundSample", "Sound data loaded from a sound datablock.");
64
65         prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
66         RNA_def_property_enum_items(prop, prop_sample_type_items);
67         RNA_def_property_flag(prop, PROP_NOT_EDITABLE); 
68         RNA_def_property_ui_text(prop, "Types", "");
69
70         prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
71         RNA_def_property_string_sdna(prop, NULL, "name");
72         RNA_def_property_flag(prop, PROP_NOT_EDITABLE); 
73         RNA_def_property_ui_text(prop, "Filename", "Full path filename of the sample");
74
75         prop= RNA_def_property(srna, "length", PROP_INT, PROP_UNSIGNED);
76         RNA_def_property_int_sdna(prop, NULL, "len");
77         RNA_def_property_ui_text(prop, "Length", "The length of sample in seconds");
78         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
79
80         prop= RNA_def_property(srna, "rate", PROP_INT, PROP_UNSIGNED);
81         RNA_def_property_ui_text(prop, "Rate", "Sample rate in kHz");
82         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
83
84         prop= RNA_def_property(srna, "bits", PROP_INT, PROP_UNSIGNED);
85         RNA_def_property_ui_text(prop, "Bits", "Bit-depth of sample");
86         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
87
88         prop= RNA_def_property(srna, "channels", PROP_INT, PROP_UNSIGNED);
89         RNA_def_property_ui_text(prop, "Channels", "Number of channels (mono=1; stereo=2)");
90         RNA_def_property_flag(prop, PROP_NOT_EDITABLE); 
91 }
92
93 static void rna_def_soundlistener(BlenderRNA *brna)
94 {
95
96         StructRNA *srna;
97         PropertyRNA *prop;
98
99         srna= RNA_def_struct(brna, "SoundListener", "ID");
100         RNA_def_struct_sdna(srna, "bSoundListener");
101         RNA_def_struct_ui_text(srna, "Sound Listener", "Sound listener defining parameters about how sounds are played.");
102
103         prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_NONE);
104         RNA_def_property_ui_text(prop, "Gain", "Overall volume for Game Engine sound.");
105         RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 4);
106
107         prop= RNA_def_property(srna, "doppler_factor", PROP_FLOAT, PROP_NONE);
108         RNA_def_property_float_sdna(prop, NULL, "dopplerfactor");
109         RNA_def_property_ui_text(prop, "Doppler Factor", "Amount of Doppler effect in Game Engine sound.");
110         RNA_def_property_ui_range(prop, 0.0, 10.0, 1, 4);
111
112         prop= RNA_def_property(srna, "doppler_velocity", PROP_FLOAT, PROP_NONE);
113         RNA_def_property_float_sdna(prop, NULL, "dopplervelocity");
114         RNA_def_property_ui_text(prop, "Doppler Velocity", "The speed of sound in the Game Engine.");
115         RNA_def_property_ui_range(prop, 0.0, 10000.0, 0.1, 4);
116
117         prop= RNA_def_property(srna, "num_sounds_blender", PROP_INT, PROP_UNSIGNED);
118         RNA_def_property_int_sdna(prop, NULL, "numsoundsblender");
119         RNA_def_property_ui_text(prop, "Total Sounds in Blender", "The total number of sounds currently linked and available.");
120         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
121
122         prop= RNA_def_property(srna, "num_sounds_gameengine", PROP_INT, PROP_UNSIGNED);
123         RNA_def_property_int_sdna(prop, NULL, "numsoundsgameengine");
124         RNA_def_property_ui_text(prop, "Total Sounds in Game Engine", "The total number of sounds in the Game Engine.");
125         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
126 }
127 #endif
128
129 static void rna_def_sound(BlenderRNA *brna)
130 {
131         StructRNA *srna;
132         PropertyRNA *prop;
133
134         srna= RNA_def_struct(brna, "Sound", "ID");
135         RNA_def_struct_sdna(srna, "bSound");
136         RNA_def_struct_ui_text(srna, "Sound", "Sound datablock referencing an external or packed sound file.");
137
138         //rna_def_ipo_common(srna);
139
140         /*prop= RNA_def_property(srna, "sample", PROP_POINTER, PROP_NONE);
141         RNA_def_property_struct_type(prop, "SoundSample");
142         RNA_def_property_ui_text(prop, "Sample", "Sound sample.");*/
143
144         prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
145         RNA_def_property_string_sdna(prop, NULL, "name");
146         RNA_def_property_ui_text(prop, "Filename", "Sound sample file used by this Sound datablock.");
147
148         prop= RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
149         RNA_def_property_pointer_sdna(prop, NULL, "packedfile");
150         RNA_def_property_ui_text(prop, "Packed File", "");
151
152         /* game engine settings */
153         prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_UNSIGNED);
154         RNA_def_property_float_sdna(prop, NULL, "volume");
155         RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 4);
156         RNA_def_property_ui_text(prop, "Volume", "Game engine only: volume for this sound.");
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_ui_range(prop, -12.0, 12.0, 10, 4);
161         RNA_def_property_ui_text(prop, "Pitch", "Game engine only: set the pitch of this sound.");
162
163         prop= RNA_def_property(srna, "loop", PROP_BOOLEAN, PROP_NONE);
164         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_LOOP);
165         RNA_def_property_ui_text(prop, "Sound Loop", "Game engine only: toggle between looping on/off.");
166
167         prop= RNA_def_property(srna, "ping_pong", PROP_BOOLEAN, PROP_NONE);
168         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_BIDIRECTIONAL_LOOP);
169         RNA_def_property_ui_text(prop, "Ping Pong", "Game engine only: Toggle between A->B and A->B->A looping.");
170
171         prop= RNA_def_property(srna, "sound_3d", PROP_BOOLEAN, PROP_NONE);
172         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_3D);
173         RNA_def_property_ui_text(prop, "3D Sound", "Game engine only: turns 3D sound on.");
174
175         prop= RNA_def_property(srna, "attenuation", PROP_FLOAT, PROP_NONE);
176         RNA_def_property_float_sdna(prop, NULL, "attenuation");
177         RNA_def_property_range(prop, 0.0, 5.0);
178         RNA_def_property_ui_text(prop, "Attenuation", "Game engine only: sets the surround scaling factor for 3D sound.");
179
180         /* gain */
181         prop= RNA_def_property(srna, "min_gain", PROP_FLOAT, PROP_NONE);
182         RNA_def_property_float_sdna(prop, NULL, "min_gain");
183         RNA_def_property_range(prop, 0.0, 1.0);
184         RNA_def_property_ui_text(prop, "Min Gain", "Minimal gain which is always guaranteed for this sound.");
185
186         prop= RNA_def_property(srna, "max_gain", PROP_FLOAT, PROP_NONE);
187         RNA_def_property_float_sdna(prop, NULL, "max_gain");
188         RNA_def_property_range(prop, 0.0, 1.0);
189         RNA_def_property_ui_text(prop, "Max Gain", "Maximal gain which is always guaranteed for this sound.");
190
191         prop= RNA_def_property(srna, "reference_distance", PROP_FLOAT, PROP_NONE);
192         RNA_def_property_float_sdna(prop, NULL, "distance");
193         RNA_def_property_ui_text(prop, "Reference Distance", "Reference distance at which the listener will experience gain.");
194         RNA_def_property_ui_range(prop, 0.0, 1000.0, 10, 4); /* NOT used anywhere */
195
196         /* unused
197         prop= RNA_def_property(srna, "panning", PROP_FLOAT, PROP_NONE);
198         RNA_def_property_float_sdna(prop, NULL, "panning");
199         RNA_def_property_ui_range(prop, -1.0, 1.0, 10, 4);
200         RNA_def_property_ui_text(prop, "Panning", "Pan the sound from left to right"); */
201
202         /* unused
203         prop= RNA_def_property(srna, "fixed_volume", PROP_BOOLEAN, PROP_NONE);
204         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_FIXED_VOLUME);
205         RNA_def_property_ui_text(prop, "Fixed Volume", "Constraint sound to fixed volume."); */
206
207         /* unused
208         prop= RNA_def_property(srna, "fixed_panning", PROP_BOOLEAN, PROP_NONE);
209         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_FIXED_PANNING);
210         RNA_def_property_ui_text(prop, "Fixed Panning", "Constraint sound to fixed panning."); */
211
212         /* unused
213         prop= RNA_def_property(srna, "priority", PROP_BOOLEAN, PROP_NONE);
214         RNA_def_property_boolean_sdna(prop, NULL, "flags", SOUND_FLAGS_PRIORITY);
215         RNA_def_property_ui_text(prop, "Priority", "Make sound higher priority."); */
216 }
217
218 void RNA_def_sound(BlenderRNA *brna)
219 {
220         //rna_def_sample(brna);
221         //rna_def_soundlistener(brna);
222         rna_def_sound(brna);
223 }
224
225 #endif
226
227