G2A Many GEOs
SHARE
TWEET

Untitled

a guest Nov 10th, 2014 162 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void WieldMeshSceneNode::setItem(const ItemStack &item, IGameDef *gamedef)
  2. {
  3.         ITextureSource *tsrc = gamedef->getTextureSource();
  4.         IItemDefManager *idef = gamedef->getItemDefManager();
  5.         IShaderSource *shdrsrc = gamedef->getShaderSource();
  6.         INodeDefManager *ndef = gamedef->getNodeDefManager();
  7.         const ItemDefinition &def = item.getDefinition(idef);
  8.         const ContentFeatures &f = ndef->get(def.name);
  9.  
  10.         // If wield_image is defined, it overrides everything else
  11.         if (def.wield_image != "") {
  12.                 setExtruded(def.wield_image, def.wield_scale, tsrc);
  13.         }
  14.         // Handle nodes
  15.         // See also CItemDefManager::createClientCached()
  16.         else if (def.type == ITEM_NODE) {
  17.                 if (f.mesh_ptr[0]) {
  18.                         // e.g. mesh nodes and nodeboxes
  19.                         changeToMesh(f.mesh_ptr[0]);
  20.                         // mesh_ptr[0] is pre-scaled by BS * f->visual_scale
  21.                         m_meshnode->setScale(
  22.                                         def.wield_scale * WIELD_SCALE_FACTOR
  23.                                         / (BS * f.visual_scale));
  24.                 } else if (f.drawtype == NDT_NORMAL || f.drawtype == NDT_ALLFACES) {
  25.                         setCube(f.tiles, def.wield_scale, tsrc);
  26.                 } else if (f.drawtype == NDT_AIRLIKE) {
  27.                         changeToMesh(NULL);
  28.                 }
  29.         }
  30.         else if (def.inventory_image != "") {
  31.                 dstream<<def.inventory_image<<"\n";
  32.                 setExtruded(def.inventory_image, def.wield_scale, tsrc);
  33.         }
  34.  
  35.         // Customize materials
  36.         for (u32 i = 0; i < m_meshnode->getMaterialCount(); ++i) {
  37.                 assert(i < 6);
  38.                 video::SMaterial &material = m_meshnode->getMaterial(i);
  39.                 //material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
  40.                 material.setFlag(video::EMF_BACK_FACE_CULLING, true);
  41.                 material.setFlag(video::EMF_LIGHTING, false);
  42.                 material.setFlag(video::EMF_BILINEAR_FILTER, false);
  43.                 material.setFlag(video::EMF_TRILINEAR_FILTER, false);
  44.                 //material.setTexture(0, f.tiles[i].texture);
  45.                 if (m_enable_shaders) {
  46.                         material.MaterialType = shdrsrc->getShaderInfo(f.tiles[i].shader_id).material;
  47.                         f.tiles[i].applyMaterialOptionsWithShaders(material);
  48.                         if (f.tiles[i].normal_texture) {
  49.                                 material.setTexture(1, f.tiles[i].normal_texture);
  50.                                 material.setTexture(2, tsrc->getTexture("enable_img.png"));
  51.                         } else {
  52.                                 material.setTexture(2, tsrc->getTexture("disable_img.png"));
  53.                         }
  54.                 } else {
  55.                         f.tiles[i].applyMaterialOptions(material);
  56.                 }
  57.         }
  58.  
  59.         // no wield mesh found
  60.         //changeToMesh(NULL);
  61. }
RAW Paste Data
Ledger Nano X - The secure hardware wallet
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top