summaryrefslogtreecommitdiffstats
path: root/source/Entities
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2013-08-30 17:29:46 +0200
committermadmaxoft <github@xoft.cz>2013-08-30 17:29:46 +0200
commit88f3fe7f000992fe7a3c47d4e235f725e9b77b69 (patch)
treed6b7590cc71e3849ae3388760bb2c87b03d6c4be /source/Entities
parentUpdated ProtectionAreas to the latest version. (diff)
downloadcuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar.gz
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar.bz2
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar.lz
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar.xz
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.tar.zst
cuberite-88f3fe7f000992fe7a3c47d4e235f725e9b77b69.zip
Diffstat (limited to 'source/Entities')
-rw-r--r--source/Entities/Player.cpp30
-rw-r--r--source/Entities/Player.h8
-rw-r--r--source/Entities/ProjectileEntity.cpp32
-rw-r--r--source/Entities/ProjectileEntity.h6
4 files changed, 38 insertions, 38 deletions
diff --git a/source/Entities/Player.cpp b/source/Entities/Player.cpp
index 0cb047933..0943f61ff 100644
--- a/source/Entities/Player.cpp
+++ b/source/Entities/Player.cpp
@@ -857,6 +857,36 @@ void cPlayer::TeleportToCoords(double a_PosX, double a_PosY, double a_PosZ)
+Vector3d cPlayer::GetThrowStartPos(void) const
+{
+ Vector3d res = GetEyePosition();
+
+ // Adjust the position to be just outside the player's bounding box:
+ res.x += 0.16 * cos(GetPitch());
+ res.y += -0.1;
+ res.z += 0.16 * sin(GetPitch());
+
+ return res;
+}
+
+
+
+
+
+Vector3d cPlayer::GetThrowSpeed(double a_SpeedCoeff) const
+{
+ Vector3d res = GetLookVector();
+ res.Normalize();
+
+ // TODO: Add a slight random change (+-0.0075 in each direction)
+
+ return res * a_SpeedCoeff;
+}
+
+
+
+
+
void cPlayer::MoveTo( const Vector3d & a_NewPos )
{
if ((a_NewPos.y < -990) && (GetPosY() > -100))
diff --git a/source/Entities/Player.h b/source/Entities/Player.h
index 4adf946db..82ff48954 100644
--- a/source/Entities/Player.h
+++ b/source/Entities/Player.h
@@ -73,7 +73,7 @@ public:
void CancelChargingBow(void);
/// Returns true if the player is currently charging the bow
- bool IsChargingBox(void) const { return m_IsChargingBow; }
+ bool IsChargingBow(void) const { return m_IsChargingBow; }
void SetTouchGround( bool a_bTouchGround );
inline void SetStance( const double a_Stance ) { m_Stance = a_Stance; }
@@ -90,6 +90,12 @@ public:
// tolua_begin
+ /// Returns the position where projectiles thrown by this player should start, player eye position + adjustment
+ Vector3d GetThrowStartPos(void) const;
+
+ /// Returns the initial speed vector of a throw, with a 3D length of a_SpeedCoeff.
+ Vector3d GetThrowSpeed(double a_SpeedCoeff) const;
+
/// Returns the current gamemode. Partly OBSOLETE, you should use IsGameModeXXX() functions wherever applicable
eGameMode GetGameMode(void) const { return m_GameMode; }
diff --git a/source/Entities/ProjectileEntity.cpp b/source/Entities/ProjectileEntity.cpp
index f405e9aa4..1dbc46ca1 100644
--- a/source/Entities/ProjectileEntity.cpp
+++ b/source/Entities/ProjectileEntity.cpp
@@ -230,7 +230,7 @@ cArrowEntity::cArrowEntity(cEntity * a_Creator, double a_X, double a_Y, double a
cArrowEntity::cArrowEntity(cPlayer & a_Player, double a_Force) :
- super(pkArrow, &a_Player, PosFromPlayerPos(a_Player), SpeedFromPlayerLook(a_Player, a_Force), 0.5, 0.5),
+ super(pkArrow, &a_Player, a_Player.GetThrowStartPos(), a_Player.GetThrowSpeed(a_Force * 1.5 * 20), 0.5, 0.5),
m_PickupState(psInSurvivalOrCreative),
m_DamageCoeff(2)
{
@@ -240,36 +240,6 @@ cArrowEntity::cArrowEntity(cPlayer & a_Player, double a_Force) :
-Vector3d cArrowEntity::PosFromPlayerPos(const cPlayer & a_Player)
-{
- Vector3d res = a_Player.GetEyePosition();
-
- // Adjust the position to be just outside the player's bounding box:
- res.x += 0.16 * cos(a_Player.GetPitch());
- res.y += -0.1;
- res.z += 0.16 * sin(a_Player.GetPitch());
-
- return res;
-}
-
-
-
-
-
-Vector3d cArrowEntity::SpeedFromPlayerLook(const cPlayer & a_Player, double a_Force)
-{
- Vector3d res = a_Player.GetLookVector();
- res.Normalize();
-
- // TODO: Add a slight random change (+-0.0075 in each direction)
-
- return res * a_Force * 1.5 * 20;
-}
-
-
-
-
-
bool cArrowEntity::CanPickup(const cPlayer & a_Player) const
{
switch (m_PickupState)
diff --git a/source/Entities/ProjectileEntity.h b/source/Entities/ProjectileEntity.h
index 1569ad035..aa7ecc772 100644
--- a/source/Entities/ProjectileEntity.h
+++ b/source/Entities/ProjectileEntity.h
@@ -112,12 +112,6 @@ public:
// tolua_begin
- /// Returns the initial arrow position, as defined by the player eye position + adjustment.
- static Vector3d PosFromPlayerPos(const cPlayer & a_Player);
-
- /// Returns the initial arrow speed, as defined by the player look vector and the force coefficient
- static Vector3d SpeedFromPlayerLook(const cPlayer & a_Player, double a_Force);
-
/// Returns whether the arrow can be picked up by players
ePickupState GetPickupState(void) const { return m_PickupState; }