}
-void Networking::ProxyReceiver::receive(unsigned i, const Variant &p)
+void Networking::ProxyReceiver::receive(unsigned i, Variant &&p)
{
if(receiver)
{
SetForScope set_sender(networking.current_sender, &connection);
- receiver->receive(i, p);
+ receiver->receive(i, move(p));
}
}
stale = true;
}
-void Networking::ServerConnection::receive(const Messages::AddPlayerResponse &add_resp)
+void Networking::ServerConnection::receive(Messages::AddPlayerResponse &&add_resp)
{
auto i = find_member(networking.players, static_cast<unsigned>(add_resp.token), &Player::id);
if(i==networking.players.end())
networking.event_source.emit<Events::NetworkPlayerArrived>(i->id, i->name);
}
-void Networking::ServerConnection::receive(const Messages::PlayerAdded &added)
+void Networking::ServerConnection::receive(Messages::PlayerAdded &&added)
{
Player &player = networking.create_player(added.name, added.id);
networking.event_source.emit<Events::NetworkPlayerArrived>(player.id, player.name);
}
-void Networking::ServerConnection::receive(const Messages::PlayerRemoved &removed)
+void Networking::ServerConnection::receive(Messages::PlayerRemoved &&removed)
{
auto i = lower_bound_member(networking.players, static_cast<uint32_t>(removed.id), &Player::id);
if(i!=networking.players.end())
}
}
-void Networking::ServerConnection::receive(const Messages::InternString &intern)
+void Networking::ServerConnection::receive(Messages::InternString &&intern)
{
if(networking.strings.size()<=intern.id)
networking.strings.resize(intern.id+1);
networking.strings[intern.id] = intern.value;
}
-void Networking::ServerConnection::receive(const Messages::StageActivated &activated)
+void Networking::ServerConnection::receive(Messages::StageActivated &&activated)
{
string name = networking.get_string(activated.name);
Stage *local_stage = networking.director.find_stage(name);
}
}
-void Networking::ClientConnection::receive(const Messages::AddPlayerRequest &add_req)
+void Networking::ClientConnection::receive(Messages::AddPlayerRequest &&add_req)
{
Player &player = networking.create_player(add_req.name, id<<16);
player.owner = this;
networking.event_source.emit<Events::NetworkPlayerArrived>(player.id, player.name);
}
-void Networking::ClientConnection::receive(const Messages::StageActivated &activated)
+void Networking::ClientConnection::receive(Messages::StageActivated &&activated)
{
const string &new_active_stage = networking.get_string(activated.name);
if(new_active_stage==active_stage)
ProxyReceiver(Networking &n, Connection &c): networking(n), connection(c) { }
void set_receiver(Net::DynamicReceiver *r) { receiver = r; }
- void receive(unsigned, const Variant &) override;
+ void receive(unsigned, Variant &&) override;
};
struct Protocol
void connect_finished(const std::exception *);
public:
- void receive(const Messages::AddPlayerResponse &) override;
- void receive(const Messages::PlayerAdded &) override;
- void receive(const Messages::PlayerRemoved &) override;
- void receive(const Messages::InternString &) override;
- void receive(const Messages::StageActivated &) override;
+ void receive(Messages::AddPlayerResponse &&) override;
+ void receive(Messages::PlayerAdded &&) override;
+ void receive(Messages::PlayerRemoved &&) override;
+ void receive(Messages::InternString &&) override;
+ void receive(Messages::StageActivated &&) override;
};
class ClientConnection: public Connection,
ClientConnection(Networking &, std::unique_ptr<Net::StreamSocket>);
void protocol_ready(const Net::Protocol &);
- void receive(const Messages::AddPlayerRequest &) override;
- void receive(const Messages::StageActivated &) override;
+ void receive(Messages::AddPlayerRequest &&) override;
+ void receive(Messages::StageActivated &&) override;
};
struct Player
void operator()(unsigned, P &);
private:
- void receive(const P &p) override { this->func(p); }
+ void receive(P &&p) override { this->func(p); }
};
void operator()(P &);
private:
- void receive(const P &p) override { this->func(p); }
+ void receive(P &&p) override { this->func(p); }
};
void operator()(Handle<E>, P &);
void operator()(unsigned, Handle<E>, P &);
- void receive(const P &p) override { this->call(p); }
+ void receive(P &&p) override { this->call(p); }
};
void operator()(Handle<E>, P &);
- void receive(const P &p) override { this->call(p); }
+ void receive(P &&p) override { this->call(p); }
};
send(target, grant);
}
-void Replicator::receive(const Messages::SpawnEntity &message)
+void Replicator::receive(Messages::SpawnEntity &&message)
{
if(is_server())
return;
(*i)->spawn(type_name, setup_name, TransformValues(message.position, message.rotation, message.scale));
}
-void Replicator::receive(const Messages::GrantPossession &message)
+void Replicator::receive(Messages::GrantPossession &&message)
{
if(is_server())
return;
void send_spawn(const ReplicatedEntity &, std::uint32_t);
void send_possession(const ReplicatedEntity &, std::uint32_t);
- void receive(const Messages::SpawnEntity &) override;
- void receive(const Messages::GrantPossession &) override;
+ void receive(Messages::SpawnEntity &&) override;
+ void receive(Messages::GrantPossession &&) override;
};
template<typename T>