aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2011-09-19 17:08:42 +0200
committerKahrl <kahrl@gmx.net>2011-09-19 17:08:42 +0200
commitab42549b1e48ede22d96e9f4ac017bb5d1853724 (patch)
tree59ac441d7b357caf072c5a5e89a2f480936f07c5
parent02726f00031c8ffadf5298b037b595372be202ef (diff)
downloadminetest-ab42549b1e48ede22d96e9f4ac017bb5d1853724.tar.gz
minetest-ab42549b1e48ede22d96e9f4ac017bb5d1853724.tar.bz2
minetest-ab42549b1e48ede22d96e9f4ac017bb5d1853724.zip
Wielded tool updates, leaves and glass work now
-rw-r--r--src/camera.cpp26
-rw-r--r--src/camera.h7
-rw-r--r--src/content_mapnode.cpp4
3 files changed, 21 insertions, 16 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index e7d506177..c5c40f5c5 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -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);
diff --git a/src/camera.h b/src/camera.h
index ccc224e3c..f960e748e 100644
--- a/src/camera.h
+++ b/src/camera.h
@@ -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);
diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp
index 89171755e..70f465130 100644
--- a/src/content_mapnode.cpp
+++ b/src/content_mapnode.cpp
@@ -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);