3D Audio GSoC:
* versioning stuff for btheme->tv3d.speaker * separating object.c speaker functions in own source file Thanks Brecht for the suggestions.
This commit is contained in:
@@ -88,11 +88,6 @@ void make_local_lamp(struct Lamp *la);
|
|||||||
void free_camera(struct Camera *ca);
|
void free_camera(struct Camera *ca);
|
||||||
void free_lamp(struct Lamp *la);
|
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_only_object(int type, const char *name);
|
||||||
struct Object *add_object(struct Scene *scene, int type);
|
struct Object *add_object(struct Scene *scene, int type);
|
||||||
|
|
||||||
|
43
source/blender/blenkernel/BKE_speaker.h
Normal file
43
source/blender/blenkernel/BKE_speaker.h
Normal file
@@ -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
|
@@ -140,6 +140,7 @@ set(SRC
|
|||||||
intern/smoke.c
|
intern/smoke.c
|
||||||
intern/softbody.c
|
intern/softbody.c
|
||||||
intern/sound.c
|
intern/sound.c
|
||||||
|
intern/speaker.c
|
||||||
intern/subsurf_ccg.c
|
intern/subsurf_ccg.c
|
||||||
intern/suggestions.c
|
intern/suggestions.c
|
||||||
intern/text.c
|
intern/text.c
|
||||||
@@ -220,6 +221,7 @@ set(SRC
|
|||||||
BKE_smoke.h
|
BKE_smoke.h
|
||||||
BKE_softbody.h
|
BKE_softbody.h
|
||||||
BKE_sound.h
|
BKE_sound.h
|
||||||
|
BKE_speaker.h
|
||||||
BKE_subsurf.h
|
BKE_subsurf.h
|
||||||
BKE_suggestions.h
|
BKE_suggestions.h
|
||||||
BKE_text.h
|
BKE_text.h
|
||||||
|
@@ -109,6 +109,7 @@
|
|||||||
#include "BKE_particle.h"
|
#include "BKE_particle.h"
|
||||||
#include "BKE_gpencil.h"
|
#include "BKE_gpencil.h"
|
||||||
#include "BKE_fcurve.h"
|
#include "BKE_fcurve.h"
|
||||||
|
#include "BKE_speaker.h"
|
||||||
|
|
||||||
#include "RNA_access.h"
|
#include "RNA_access.h"
|
||||||
|
|
||||||
|
@@ -56,7 +56,6 @@
|
|||||||
#include "DNA_sequence_types.h"
|
#include "DNA_sequence_types.h"
|
||||||
#include "DNA_sound_types.h"
|
#include "DNA_sound_types.h"
|
||||||
#include "DNA_space_types.h"
|
#include "DNA_space_types.h"
|
||||||
#include "DNA_speaker_types.h"
|
|
||||||
#include "DNA_view3d_types.h"
|
#include "DNA_view3d_types.h"
|
||||||
#include "DNA_world_types.h"
|
#include "DNA_world_types.h"
|
||||||
|
|
||||||
@@ -98,6 +97,7 @@
|
|||||||
#include "BKE_sca.h"
|
#include "BKE_sca.h"
|
||||||
#include "BKE_scene.h"
|
#include "BKE_scene.h"
|
||||||
#include "BKE_sequencer.h"
|
#include "BKE_sequencer.h"
|
||||||
|
#include "BKE_speaker.h"
|
||||||
#include "BKE_softbody.h"
|
#include "BKE_softbody.h"
|
||||||
#include "BKE_material.h"
|
#include "BKE_material.h"
|
||||||
|
|
||||||
@@ -977,99 +977,6 @@ void free_lamp(Lamp *la)
|
|||||||
la->id.icon_id = 0;
|
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)
|
static void *add_obdata_from_type(int type)
|
||||||
|
139
source/blender/blenkernel/intern/speaker.c
Normal file
139
source/blender/blenkernel/intern/speaker.c
Normal file
@@ -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);
|
||||||
|
}
|
@@ -1594,6 +1594,13 @@ void init_userdef_do_versions(void)
|
|||||||
NDOF_SHOULD_PAN | NDOF_SHOULD_ZOOM | NDOF_SHOULD_ROTATE;
|
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 */
|
/* funny name, but it is GE stuff, moves userdef stuff to engine */
|
||||||
// XXX space_set_commmandline_options();
|
// XXX space_set_commmandline_options();
|
||||||
/* this timer uses U */
|
/* this timer uses U */
|
||||||
|
@@ -73,6 +73,7 @@
|
|||||||
#include "BKE_particle.h"
|
#include "BKE_particle.h"
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
#include "BKE_sca.h"
|
#include "BKE_sca.h"
|
||||||
|
#include "BKE_speaker.h"
|
||||||
#include "BKE_texture.h"
|
#include "BKE_texture.h"
|
||||||
|
|
||||||
#include "RNA_access.h"
|
#include "RNA_access.h"
|
||||||
|
@@ -76,6 +76,7 @@
|
|||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
#include "BKE_sca.h"
|
#include "BKE_sca.h"
|
||||||
#include "BKE_scene.h"
|
#include "BKE_scene.h"
|
||||||
|
#include "BKE_speaker.h"
|
||||||
#include "BKE_texture.h"
|
#include "BKE_texture.h"
|
||||||
|
|
||||||
#include "WM_api.h"
|
#include "WM_api.h"
|
||||||
|
@@ -63,6 +63,7 @@
|
|||||||
#include "BKE_particle.h"
|
#include "BKE_particle.h"
|
||||||
#include "BKE_font.h"
|
#include "BKE_font.h"
|
||||||
#include "BKE_node.h"
|
#include "BKE_node.h"
|
||||||
|
#include "BKE_speaker.h"
|
||||||
|
|
||||||
#include "DNA_armature_types.h"
|
#include "DNA_armature_types.h"
|
||||||
#include "DNA_camera_types.h"
|
#include "DNA_camera_types.h"
|
||||||
|
Reference in New Issue
Block a user