void Application::Handle(const SDL_WindowEvent &event) {
switch (event.event) {
case SDL_WINDOWEVENT_FOCUS_GAINED:
- env.window.GrabMouse();
+ GetState().OnFocus();
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
- env.window.ReleaseMouse();
+ GetState().OnBlur();
break;
case SDL_WINDOWEVENT_RESIZED:
env.viewport.Resize(event.data1, event.data2);
+ GetState().OnResize(env.viewport);
break;
default:
break;
void AssetLoader::LoadBlockTypes(
const string &set_name,
BlockTypeRegistry ®,
+ ResourceIndex &snd_index,
ResourceIndex &tex_index,
const ShapeRegistry &shapes
) const {
in.ReadVec(type.outline_color);
} else if (name == "label") {
in.ReadString(type.label);
+ } else if (name == "place_sound") {
+ in.ReadString(tex_name);
+ type.place_sound = snd_index.GetID(tex_name);
+ } else if (name == "remove_sound") {
+ in.ReadString(tex_name);
+ type.remove_sound = snd_index.GetID(tex_name);
} else if (name == "luminosity") {
type.luminosity = in.GetInt();
} else if (name == "block_light") {
in.Skip(Token::EQUALS);
if (prop_name == "root") {
model.RootPart().Read(in, tex_index, shapes);
+ } else if (prop_name == "eyes") {
+ model.SetEyes(in.GetULong());
} else {
while (in.HasMore() && in.Peek().type != Token::SEMICOLON) {
in.Next();