3D Audio GSoC:
authorJoerg Mueller <nexyon@gmail.com>
Thu, 4 Aug 2011 07:12:03 +0000 (07:12 +0000)
committerJoerg Mueller <nexyon@gmail.com>
Thu, 4 Aug 2011 07:12:03 +0000 (07:12 +0000)
* versioning stuff for btheme->tv3d.speaker
* separating object.c speaker functions in own source file

Thanks Brecht for the suggestions.

source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/BKE_speaker.h [new file with mode: 0644]
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/speaker.c [new file with mode: 0644]
source/blender/editors/interface/resources.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_relations.c
source/blender/makesrna/intern/rna_main_api.c

index f9e01a524abb560f0486bbe9c4a4201160b3e1f4..a6b5c04b5c3038a3e2051cb11d0adc8ae3fb6172 100644 (file)
@@ -88,11 +88,6 @@ void make_local_lamp(struct Lamp *la);
 void free_camera(struct Camera *ca);
 void free_lamp(struct Lamp *la);
 
-void *add_speaker(const char *name);
-struct Speaker *copy_speaker(struct Speaker *spk);
-void make_local_speaker(struct Speaker *spk);
-void free_speaker(struct Speaker *spk);
-
 struct Object *add_only_object(int type, const char *name);
 struct Object *add_object(struct Scene *scene, int type);
 
diff --git a/source/blender/blenkernel/BKE_speaker.h b/source/blender/blenkernel/BKE_speaker.h
new file mode 100644 (file)
index 0000000..111bd86
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Jörg Müller.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BKE_SPEAKER_H
+#define BKE_SPEAKER_H
+
+/** \file BKE_speaker.h
+ *  \ingroup bke
+ *  \brief General operations for speakers.
+ */
+
+void *add_speaker(const char *name);
+struct Speaker *copy_speaker(struct Speaker *spk);
+void make_local_speaker(struct Speaker *spk);
+void free_speaker(struct Speaker *spk);
+
+#endif
index defcef584637d4963b5a297c743fd92fecfec373..c1797427cc26dfc188c364d39b316a44d556f3f3 100644 (file)
@@ -140,6 +140,7 @@ set(SRC
        intern/smoke.c
        intern/softbody.c
        intern/sound.c
+       intern/speaker.c
        intern/subsurf_ccg.c
        intern/suggestions.c
        intern/text.c
@@ -220,6 +221,7 @@ set(SRC
        BKE_smoke.h
        BKE_softbody.h
        BKE_sound.h
+       BKE_speaker.h
        BKE_subsurf.h
        BKE_suggestions.h
        BKE_text.h
index 85f87992c288dc37befd2888200df37817034d7c..8668168936bfb221d89f3f3496e8a6d988ff7345 100644 (file)
 #include "BKE_particle.h"
 #include "BKE_gpencil.h"
 #include "BKE_fcurve.h"
+#include "BKE_speaker.h"
 
 #include "RNA_access.h"
 
index 66bf4ea208bf79a3b61428ae7531d8034b0ca764..a615bc42f66e52bdb1c566281510acafdeff32df 100644 (file)
@@ -56,7 +56,6 @@
 #include "DNA_sequence_types.h"
 #include "DNA_sound_types.h"
 #include "DNA_space_types.h"
-#include "DNA_speaker_types.h"
 #include "DNA_view3d_types.h"
 #include "DNA_world_types.h"
 
@@ -98,6 +97,7 @@
 #include "BKE_sca.h"
 #include "BKE_scene.h"
 #include "BKE_sequencer.h"
+#include "BKE_speaker.h"
 #include "BKE_softbody.h"
 #include "BKE_material.h"
 
@@ -977,99 +977,6 @@ void free_lamp(Lamp *la)
        la->id.icon_id = 0;
 }
 
-void *add_speaker(const char *name)
-{
-       Speaker *spk;
-
-       spk=  alloc_libblock(&G.main->speaker, ID_SPK, name);
-
-       spk->attenuation = 1.0f;
-       spk->cone_angle_inner = 360.0f;
-       spk->cone_angle_outer = 360.0f;
-       spk->cone_volume_outer = 1.0f;
-       spk->distance_max = FLT_MAX;
-       spk->distance_reference = 1.0f;
-       spk->flag = 0;
-       spk->pitch = 1.0f;
-       spk->sound = NULL;
-       spk->volume = 1.0f;
-       spk->volume_max = 1.0f;
-       spk->volume_min = 0.0f;
-
-       return spk;
-}
-
-Speaker *copy_speaker(Speaker *spk)
-{
-       Speaker *spkn;
-
-       spkn= copy_libblock(spk);
-       if(spkn->sound)
-               spkn->sound->id.us++;
-
-       return spkn;
-}
-
-void make_local_speaker(Speaker *spk)
-{
-       Main *bmain= G.main;
-       Object *ob;
-       int local=0, lib=0;
-
-       /* - only lib users: do nothing
-               * - only local users: set flag
-               * - mixed: make copy
-               */
-
-       if(spk->id.lib==NULL) return;
-       if(spk->id.us==1) {
-               spk->id.lib= NULL;
-               spk->id.flag= LIB_LOCAL;
-               new_id(&bmain->speaker, (ID *)spk, NULL);
-               return;
-       }
-
-       ob= bmain->object.first;
-       while(ob) {
-               if(ob->data==spk) {
-                       if(ob->id.lib) lib= 1;
-                       else local= 1;
-               }
-               ob= ob->id.next;
-       }
-
-       if(local && lib==0) {
-               spk->id.lib= NULL;
-               spk->id.flag= LIB_LOCAL;
-               new_id(&bmain->speaker, (ID *)spk, NULL);
-       }
-       else if(local && lib) {
-               Speaker *spkn= copy_speaker(spk);
-               spkn->id.us= 0;
-
-               ob= bmain->object.first;
-               while(ob) {
-                       if(ob->data==spk) {
-
-                               if(ob->id.lib==NULL) {
-                                       ob->data= spkn;
-                                       spkn->id.us++;
-                                       spk->id.us--;
-                               }
-                       }
-                       ob= ob->id.next;
-               }
-       }
-}
-
-void free_speaker(Speaker *spk)
-{
-       if(spk->sound)
-               spk->sound->id.us--;
-
-       BKE_free_animdata((ID *)spk);
-}
-
 /* *************************************************** */
 
 static void *add_obdata_from_type(int type)
diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c
new file mode 100644 (file)
index 0000000..200dbd4
--- /dev/null
@@ -0,0 +1,139 @@
+/* speaker.c
+ *
+ * 
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Jörg Müller.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/blenkernel/intern/speaker.c
+ *  \ingroup bke
+ */
+
+#include "DNA_object_types.h"
+#include "DNA_sound_types.h"
+#include "DNA_speaker_types.h"
+
+#include "BLI_math.h"
+
+#include "BKE_animsys.h"
+#include "BKE_global.h"
+#include "BKE_library.h"
+#include "BKE_main.h"
+#include "BKE_speaker.h"
+
+void *add_speaker(const char *name)
+{
+       Speaker *spk;
+
+       spk=  alloc_libblock(&G.main->speaker, ID_SPK, name);
+
+       spk->attenuation = 1.0f;
+       spk->cone_angle_inner = 360.0f;
+       spk->cone_angle_outer = 360.0f;
+       spk->cone_volume_outer = 1.0f;
+       spk->distance_max = FLT_MAX;
+       spk->distance_reference = 1.0f;
+       spk->flag = 0;
+       spk->pitch = 1.0f;
+       spk->sound = NULL;
+       spk->volume = 1.0f;
+       spk->volume_max = 1.0f;
+       spk->volume_min = 0.0f;
+
+       return spk;
+}
+
+Speaker *copy_speaker(Speaker *spk)
+{
+       Speaker *spkn;
+
+       spkn= copy_libblock(spk);
+       if(spkn->sound)
+               spkn->sound->id.us++;
+
+       return spkn;
+}
+
+void make_local_speaker(Speaker *spk)
+{
+       Main *bmain= G.main;
+       Object *ob;
+       int local=0, lib=0;
+
+       /* - only lib users: do nothing
+               * - only local users: set flag
+               * - mixed: make copy
+               */
+
+       if(spk->id.lib==NULL) return;
+       if(spk->id.us==1) {
+               spk->id.lib= NULL;
+               spk->id.flag= LIB_LOCAL;
+               new_id(&bmain->speaker, (ID *)spk, NULL);
+               return;
+       }
+
+       ob= bmain->object.first;
+       while(ob) {
+               if(ob->data==spk) {
+                       if(ob->id.lib) lib= 1;
+                       else local= 1;
+               }
+               ob= ob->id.next;
+       }
+
+       if(local && lib==0) {
+               spk->id.lib= NULL;
+               spk->id.flag= LIB_LOCAL;
+               new_id(&bmain->speaker, (ID *)spk, NULL);
+       }
+       else if(local && lib) {
+               Speaker *spkn= copy_speaker(spk);
+               spkn->id.us= 0;
+
+               ob= bmain->object.first;
+               while(ob) {
+                       if(ob->data==spk) {
+
+                               if(ob->id.lib==NULL) {
+                                       ob->data= spkn;
+                                       spkn->id.us++;
+                                       spk->id.us--;
+                               }
+                       }
+                       ob= ob->id.next;
+               }
+       }
+}
+
+void free_speaker(Speaker *spk)
+{
+       if(spk->sound)
+               spk->sound->id.us--;
+
+       BKE_free_animdata((ID *)spk);
+}
index adabfe5f230297daec60f870f0cd2234f55fe06b..dd63cdf586169c80493920cee052b1eef9818c1e 100644 (file)
@@ -1594,6 +1594,13 @@ void init_userdef_do_versions(void)
                        NDOF_SHOULD_PAN | NDOF_SHOULD_ZOOM | NDOF_SHOULD_ROTATE;
        }
 
+       {
+               bTheme *btheme;
+               for(btheme= U.themes.first; btheme; btheme= btheme->next) {
+                       btheme->tv3d.speaker[3] = 255;
+               }
+       }
+
        /* funny name, but it is GE stuff, moves userdef stuff to engine */
 // XXX space_set_commmandline_options();
        /* this timer uses U */
index 97a98d2017fe01b0c87ab053178ad42547d9f342..22e6a5243c74e9ab8d50ef6380b7e97a27f771b8 100644 (file)
@@ -73,6 +73,7 @@
 #include "BKE_particle.h"
 #include "BKE_report.h"
 #include "BKE_sca.h"
+#include "BKE_speaker.h"
 #include "BKE_texture.h"
 
 #include "RNA_access.h"
index ce1f47c1b7b2dcf3da0c22f8d98a279e1c902931..39300cabd5e2efc86eb43a89c81ee5abadc84869 100644 (file)
@@ -76,6 +76,7 @@
 #include "BKE_report.h"
 #include "BKE_sca.h"
 #include "BKE_scene.h"
+#include "BKE_speaker.h"
 #include "BKE_texture.h"
 
 #include "WM_api.h"
index 7b951294aee0cd3845b7c08ddbea8f49a83a3fba..e99958c2217bb7ff9436a97a814b38a340d70c52 100644 (file)
@@ -63,6 +63,7 @@
 #include "BKE_particle.h"
 #include "BKE_font.h"
 #include "BKE_node.h"
+#include "BKE_speaker.h"
 
 #include "DNA_armature_types.h"
 #include "DNA_camera_types.h"