From accb2971f11bcfa04ef1c225d5084197dc30a6a2 Mon Sep 17 00:00:00 2001 From: "keyboard.osh@gmail.com" Date: Sun, 5 May 2013 04:52:04 +0000 Subject: Entity: Now entites inside a cobweb slow down their speed git-svn-id: http://mc-server.googlecode.com/svn/trunk@1442 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Entity.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/source/Entity.cpp b/source/Entity.cpp index c614c8e9c..c2e6b1665 100644 --- a/source/Entity.cpp +++ b/source/Entity.cpp @@ -238,23 +238,37 @@ void cEntity::HandlePhysics(float a_Dt, cChunk & a_Chunk) } else { - //Push out entity. - m_bOnGround = true; - NextPos.y += 0.2; - LOGD("Entity #%d (%s) is inside a block at {%d,%d,%d}", - m_UniqueID, GetClass(), BlockX, BlockY, BlockZ); + if (BlockIn == E_BLOCK_COBWEB) + { + NextSpeed.x *= 0.25; + NextSpeed.z *= 0.25; + } + else + { + //Push out entity. + m_bOnGround = true; + NextPos.y += 0.2; + LOGD("Entity #%d (%s) is inside a block at {%d,%d,%d}", + m_UniqueID, GetClass(), BlockX, BlockY, BlockZ); + } } if (!m_bOnGround) { float fallspeed; - if (!IsBlockWater(BlockIn)) + if (IsBlockWater(BlockIn)) { - fallspeed = m_Gravity * a_Dt; + fallspeed = -3.0f * a_Dt; //Fall slower in water. + } + else if (BlockIn == E_BLOCK_COBWEB) + { + NextSpeed.y *= 0.05; //Reduce overall falling speed + fallspeed = 0; //No falling. } else { - fallspeed = -3.0f * a_Dt; //Fall slower in water. + //Normal gravity + fallspeed = m_Gravity * a_Dt; } NextSpeed.y += fallspeed; } -- cgit v1.2.3