X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=cc3106f8e34a08be63d49f9ce789d83480da3f74;hb=7e782291e0ce39eb2d4e8c1df28f682c313e6f8d;hp=2618d98f3b0e0d1e1c0810c7b2f6db8bbb7964a1;hpb=a26ca06878d45d3ce77cbc28b574f2553e121944;p=blank.git diff --git a/src/client/client.cpp b/src/client/client.cpp index 2618d98..cc3106f 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -50,6 +50,7 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) : master(master) , shapes() , block_types() +, models() , save(master.GetEnv().config.GetWorldPath(master.GetWorldConf().name, master.GetConfig().net.host)) , world(block_types, master.GetWorldConf()) , player(*world.AddPlayer(master.GetConfig().player.name)) @@ -59,10 +60,8 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) , interface(master.GetConfig(), master.GetEnv().keymap, input, *this) , chunk_receiver(world.Chunks(), save) , chunk_renderer(player.GetChunks()) -, skeletons() , loop_timer(16) , sky(master.GetEnv().loader.LoadCubeMap("skybox")) -, tex_map() , update_status() { if (!save.Exists()) { save.Write(master.GetWorldConf()); @@ -70,9 +69,7 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) TextureIndex tex_index; master.GetEnv().loader.LoadShapes("default", shapes); master.GetEnv().loader.LoadBlockTypes("default", block_types, tex_index, shapes); - skeletons.Load(shapes); - tex_map.push_back(tex_index.GetID("rock-1")); - tex_map.push_back(tex_index.GetID("rock-face")); + master.GetEnv().loader.LoadModels("default", models, tex_index, shapes); interface.SetInventorySlots(block_types.size() - 1); chunk_renderer.LoadTextures(master.GetEnv().loader, tex_index); chunk_renderer.FogDensity(master.GetWorldConf().fog_density); @@ -167,10 +164,9 @@ void InteractiveState::Handle(const Packet::SpawnEntity &pack) { pack.ReadEntity(entity); uint32_t skel_id; pack.ReadSkeletonID(skel_id); - Model *skel = skeletons.ByID(skel_id); - if (skel) { - skel->Instantiate(entity.GetModel()); - entity.GetModel().SetTextures(tex_map); + if (skel_id > 0 && skel_id <= models.size()) { + Model &skel = models.Get(skel_id); + skel.Instantiate(entity.GetModel()); } cout << "spawned entity #" << entity_id << " (" << entity.Name() << ") at " << entity.AbsolutePosition() << endl;