Minetest  5.4.0
sound.h
Go to the documentation of this file.
1 /*
2 Minetest
3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14 
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 #pragma once
21 
22 #include <set>
23 #include <string>
24 #include "util/serialize.h"
25 #include "irrlichttypes_bloated.h"
26 
28 {
29  SimpleSoundSpec(const std::string &name = "", float gain = 1.0f,
30  float fade = 0.0f, float pitch = 1.0f) :
31  name(name),
33  {
34  }
35 
36  bool exists() const { return !name.empty(); }
37 
38  // Take cf_version from ContentFeatures::serialize to
39  // keep in sync with item definitions
40  void serialize(std::ostream &os, u8 cf_version) const
41  {
42  os << serializeString16(name);
43  writeF32(os, gain);
44  writeF32(os, pitch);
45  writeF32(os, fade);
46  // if (cf_version < ?)
47  // return;
48  }
49 
50  void deSerialize(std::istream &is, u8 cf_version)
51  {
53  gain = readF32(is);
54  pitch = readF32(is);
55  fade = readF32(is);
56  }
57 
58  std::string name;
59  float gain = 1.0f;
60  float fade = 0.0f;
61  float pitch = 1.0f;
62 };
std::string serializeString16(const std::string &plain)
Definition: serialize.cpp:38
std::string deSerializeString16(std::istream &is)
Definition: serialize.cpp:54
void writeF32(u8 *data, f32 i)
Definition: serialize.h:312
f32 readF32(const u8 *data)
Definition: serialize.h:194
Definition: sound.h:28
void deSerialize(std::istream &is, u8 cf_version)
Definition: sound.h:50
std::string name
Definition: sound.h:58
bool exists() const
Definition: sound.h:36
float fade
Definition: sound.h:60
void serialize(std::ostream &os, u8 cf_version) const
Definition: sound.h:40
SimpleSoundSpec(const std::string &name="", float gain=1.0f, float fade=0.0f, float pitch=1.0f)
Definition: sound.h:29
float gain
Definition: sound.h:59
float pitch
Definition: sound.h:61