Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio/audio.cc14
-rw-r--r--src/client/client.cc20
-rw-r--r--src/client/view.cc47
-rw-r--r--src/game/ship.cc2
4 files changed, 67 insertions, 16 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc
index 94f4d23..50d15c8 100644
--- a/src/audio/audio.cc
+++ b/src/audio/audio.cc
@@ -30,6 +30,14 @@ void init()
// create the audio context
audio_context = alcCreateContext(audio_device ,0);
+
+ if (!audio_context) {
+ alcCloseDevice(audio_device);
+ audio_device = 0;
+ con_warn << "Could not create audio context!";
+ return;
+ }
+
alcMakeContextCurrent(audio_context);
// clear errors
@@ -100,6 +108,9 @@ void play(const char *name)
void update_source(size_t source_index, math::Vector3f const & location, math::Vector3f const & velocity, float pitch, float gain)
{
+ if (!audio_context)
+ return;
+
ALuint source = Sources::source(source_index);
alSourcefv(source, AL_POSITION, location.ptr());
//alSourcefv(source, AL_VELOCITY, velocity.ptr());
@@ -127,6 +138,9 @@ void loop( size_t source_index, const char *name, float pitch, float gain)
void update_listener(math::Vector3f const &location, math::Axis const &axis, math::Vector3f const & velocity)
{
+ if (!audio_context)
+ return;
+
alListenerfv(AL_POSITION, location.ptr());
ALfloat orientation[6];
diff --git a/src/client/client.cc b/src/client/client.cc
index f5da1f0..93d254e 100644
--- a/src/client/client.cc
+++ b/src/client/client.cc
@@ -30,6 +30,20 @@ Client app;
//--- engine functions --------------------------------------------
+void func_snd_restart(std::string const &args)
+{
+ // unload entity sounds
+ for (core::Entity::Registry::iterator it = core::Entity::registry().begin(); it != core::Entity::registry().end(); it++) {
+ core::Entity *entity = (*it).second;
+ if (entity->state())
+ entity->state()->clearsound();
+ }
+
+ audio::shutdown();
+
+ audio::init();
+}
+
void func_r_restart(std::string const &args)
{
video::shutdown();
@@ -111,8 +125,12 @@ void Client::init(int count, char **arguments)
// add engine functions
core::Func *func = 0;
+
func = core::Func::add("r_restart", (core::FuncPtr) func_r_restart);
func->set_info("restart render subsystem");
+
+ func = core::Func::add("snd_restart", (core::FuncPtr) func_snd_restart);
+ func->set_info("restart audio subsystem");
}
void Client::run()
@@ -171,6 +189,8 @@ void Client::shutdown()
core::Func::remove("r_restart");
+ core::Func::remove("snd_restart");
+
chat::shutdown();
audio::shutdown();
diff --git a/src/client/view.cc b/src/client/view.cc
index f72a149..391da35 100644
--- a/src/client/view.cc
+++ b/src/client/view.cc
@@ -38,10 +38,15 @@ core::Cvar *ui_pointerhovercolor =0;
namespace view
{
-const size_t fps_counter_size = 25; // fps is the average of 20 frames
+const size_t fps_counter_size = 32; // fps is the average of 32 frames
float fps_counter_time[fps_counter_size];
size_t fps_counter_index = 0;
+const size_t net_counter_size = 128;
+float net_counter_time[net_counter_size];
+size_t net_counter_traffic[net_counter_size];
+size_t net_counter_index;
+
void init()
{
draw_stats = core::Cvar::get("draw_stats", "0", core::Cvar::Archive);
@@ -63,6 +68,9 @@ void init()
for (size_t i =0; i < fps_counter_size; i++)
fps_counter_time[i] = 0.0f;
+
+ for (size_t i = 0; i < net_counter_size; i++)
+ net_counter_traffic[i] = 0;
}
void shutdown()
@@ -99,18 +107,12 @@ void draw_status()
std::stringstream status;
- int minutes = (int) floorf(core::application()->time() / 60.0f);
- int seconds = (int) floorf(core::application()->time() - (float) minutes* 60.0f);
-
- status << "^Ntime ^B" << std::setfill(' ') << std::setw(3) << minutes << ":" << std::setfill('0') << std::setw(2) << seconds;
- Text::draw(video::width-Text::fontwidth()*11-4, 4, status);
-
if (core::game()) {
int minutes = (int) floorf(core::game()->clientframetime() / 60.0f);
int seconds = (int) floorf( core::game()->clientframetime() - (float) minutes* 60.0f);
- status << "^Ngame ^B" << std::setfill(' ') << std::setw(3) << minutes << ":" << std::setfill('0') << std::setw(2) << seconds;
- Text::draw(video::width-Text::fontwidth()*11-4, Text::fontheight()+ 4, status);
+ status << "^Ntime ^B" << std::setfill(' ') << std::setw(3) << minutes << ":" << std::setfill('0') << std::setw(2) << seconds;
+ Text::draw(video::width-Text::fontwidth()*12-4, Text::fontheight()+ 4, status);
}
// print stats if desired
@@ -129,15 +131,30 @@ void draw_status()
}
std::stringstream stats;
- stats << "^Nfps ^B" << std::setw(6) << fps << "\n";
+ stats << "^Nfps ^B" << std::setw(6) << fps << "\n";
+
if (core::application()->connected()) {
- stats << "^Ntris ^B" << std::setw(5) << render::Stats::tris << "\n";
- stats << "^Nquads ^B" << std::setw(5) << render::Stats::quads << "\n";
+ stats << "^Ntris ^B" << std::setw(5) << render::Stats::tris << "\n";
+ stats << "^Nquads ^B" << std::setw(5) << render::Stats::quads << "\n";
+
+ if (core::Stats::network_bytes_sent + core::Stats::network_bytes_received) {
+ net_counter_traffic[net_counter_index] = core::Stats::network_bytes_sent + core::Stats::network_bytes_received;
+ net_counter_time[net_counter_index] = core::application()->time();
+ size_t index_max = net_counter_index;
+
+ net_counter_index = (net_counter_index + 1) % net_counter_size;
+ size_t index_min = net_counter_index;
+
+ float d = net_counter_time[index_max] - net_counter_time[index_min];
+ if (d > 0) {
+ float traffic = net_counter_traffic[index_max] - net_counter_traffic[index_min];
+
+ stats << "^Nnet ^B" << std::setw(6) << roundf( (float) traffic / d ) << "\n";
+ }
+ }
}
- stats << "^Ntx ^B"<< std::setw(5) << (core::Stats::network_bytes_sent >> 10) << "\n";
- stats << "^Nrx ^B"<< std::setw(5) << (core::Stats::network_bytes_received >> 10) << "\n";
- Text::draw(video::width-Text::fontwidth()*11-4, 4 + Text::fontheight()*2, stats);
+ Text::draw(video::width-Text::fontwidth()*12-4, 4 + Text::fontheight()*2, stats);
}
// draw a basic HUD
diff --git a/src/game/ship.cc b/src/game/ship.cc
index 920bf43..89ff343 100644
--- a/src/game/ship.cc
+++ b/src/game/ship.cc
@@ -197,7 +197,7 @@ void Ship::frame(float seconds)
if (entity_thrust < target_thrust)
entity_thrust = target_thrust;
}
- math::clamp(entity_thrust, 0.0f, 1.0f);
+ //math::clamp(entity_thrust, 0.0f, 1.0f);
// update roll
if (current_target_roll < target_roll) {