Wielded tool updates, leaves and glass work now
authorKahrl <kahrl@gmx.net>
Mon, 19 Sep 2011 15:08:42 +0000 (17:08 +0200)
committerKahrl <kahrl@gmx.net>
Mon, 19 Sep 2011 15:08:42 +0000 (17:08 +0200)
src/camera.cpp
src/camera.h
src/content_mapnode.cpp

index e7d506177e851bdf09567b5f296d8a11ce99161f..c5c40f5c5880c644900fcf4f130f86993f706253 100644 (file)
@@ -54,7 +54,10 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control):
 
        m_view_bobbing_anim(0),
        m_view_bobbing_state(0),
-       m_view_bobbing_speed(0)
+       m_view_bobbing_speed(0),
+
+       m_digging_anim(0),
+       m_digging_speed(0)
 {
        //dstream<<__FUNCTION_NAME<<std::endl;
 
@@ -64,8 +67,7 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control):
        m_headnode = smgr->addEmptySceneNode(m_playernode);
        m_cameranode = smgr->addCameraSceneNode(smgr->getRootSceneNode());
        m_cameranode->bindTargetAndRotation(true);
-       m_wieldnode = new ExtrudedSpriteSceneNode(smgr->getRootSceneNode(), smgr, -1, v3f(0, 120, 10), v3f(0, 0, 0), v3f(100, 100, 100));
-       //m_wieldnode = new ExtrudedSpriteSceneNode(smgr->getRootSceneNode(), smgr, -1);
+       m_wieldnode = new ExtrudedSpriteSceneNode(m_headnode, smgr, -1, v3f(1.3, -1, 2), v3f(-20, -100, 20), v3f(1));
 
        updateSettings();
 }
@@ -356,9 +358,10 @@ void Camera::wield(const InventoryItem* item)
                        // A block-type material
                        MaterialItem* mat_item = (MaterialItem*) item;
                        content_t content = mat_item->getMaterial();
-                       if (content_features(content).solidness)
+                       if (content_features(content).solidness || content_features(content).visual_solidness)
                        {
                                m_wieldnode->setCube(content_features(content).tiles);
+                               m_wieldnode->setScale(v3f(0.9));
                                isCube = true;
                        }
                }
@@ -367,6 +370,7 @@ void Camera::wield(const InventoryItem* item)
                if (!isCube)
                {
                        m_wieldnode->setSprite(item->getImageRaw());
+                       m_wieldnode->setScale(v3f(1.2));
                }
 
                m_wieldnode->setVisible(true);
@@ -458,17 +462,9 @@ void ExtrudedSpriteSceneNode::setCube(const TileSpec tiles[6])
        for (int i = 0; i < 6; ++i)
        {
                // Get the tile texture and atlas transformation
-               u32 texture_id = tiles[i].texture.id;
-               video::ITexture* atlas = NULL;
-               v2f pos(0,0);
-               v2f size(1,1);
-               if (g_texturesource)
-               {
-                       AtlasPointer ap = g_texturesource->getTexture(texture_id);
-                       atlas = ap.atlas;
-                       pos = ap.pos;
-                       size = ap.size;
-               }
+               video::ITexture* atlas = tiles[i].texture.atlas;
+               v2f pos = tiles[i].texture.pos;
+               v2f size = tiles[i].texture.size;
 
                // Set material flags and texture
                video::SMaterial& material = m_meshnode->getMaterial(i);
index ccc224e3cd422362cd09545f380246b13dfa1188..f960e748e1e1a7283f62cb3b22a822a5935790ff 100644 (file)
@@ -166,6 +166,11 @@ private:
        s32 m_view_bobbing_state;
        // Speed of view bobbing animation
        f32 m_view_bobbing_speed;
+
+       // Digging animation
+       s32 m_digging_anim;
+       // Speed of digging animation
+       s32 m_digging_speed;
 };
 
 
@@ -187,7 +192,7 @@ public:
                s32 id = -1,
                const v3f& position = v3f(0,0,0),
                const v3f& rotation = v3f(0,0,0),
-               const v3f& scale = v3f(0,0,0));
+               const v3f& scale = v3f(1,1,1));
        ~ExtrudedSpriteSceneNode();
 
        void setSprite(video::ITexture* texture);
index 89171755e33a1ec8f640c2927a42c5cf08f9cfd8..70f46513030f10321b4430119b3e19e247992739 100644 (file)
@@ -236,6 +236,8 @@ void content_mapnode_init()
        if(new_style_leaves)
        {
                f->solidness = 0; // drawn separately, makes no faces
+               f->visual_solidness = 1;
+               f->setAllTextures("leaves.png");
                f->setInventoryTextureCube("leaves.png", "leaves.png", "leaves.png");
        }
        else
@@ -287,6 +289,8 @@ void content_mapnode_init()
        f->is_ground_content = true;
        f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
        f->solidness = 0; // drawn separately, makes no faces
+       f->visual_solidness = 1;
+       f->setAllTextures("glass.png");
        f->setInventoryTextureCube("glass.png", "glass.png", "glass.png");
        setWoodLikeDiggingProperties(f->digging_properties, 0.15);