first commit
This commit is contained in:
52
Minecraft.Client/Common/Tutorial/AreaConstraint.cpp
Normal file
52
Minecraft.Client/Common/Tutorial/AreaConstraint.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "..\..\Minecraft.h"
|
||||
#include "..\..\MultiplayerLocalPlayer.h"
|
||||
#include "AreaConstraint.h"
|
||||
#include "..\..\..\Minecraft.World\AABB.h"
|
||||
|
||||
AreaConstraint::AreaConstraint( int descriptionId, double x0, double y0, double z0, double x1, double y1, double z1, bool contains /*= true*/, bool restrictsMovement /*=true*/ )
|
||||
: TutorialConstraint( descriptionId )
|
||||
{
|
||||
messageArea = AABB::newPermanent(x0+2, y0+2, z0+2, x1-2, y1-2, z1-2);
|
||||
movementArea = AABB::newPermanent(x0, y0, z0, x1, y1, z1);
|
||||
|
||||
this->contains = contains;
|
||||
m_restrictsMovement = restrictsMovement;
|
||||
}
|
||||
|
||||
AreaConstraint::~AreaConstraint()
|
||||
{
|
||||
delete messageArea;
|
||||
delete movementArea;
|
||||
}
|
||||
|
||||
bool AreaConstraint::isConstraintSatisfied(int iPad)
|
||||
{
|
||||
Minecraft *minecraft = Minecraft::GetInstance();
|
||||
return messageArea->contains( minecraft->localplayers[iPad]->getPos(1) ) == contains;
|
||||
}
|
||||
|
||||
bool AreaConstraint::isConstraintRestrictive(int iPad)
|
||||
{
|
||||
return m_restrictsMovement;
|
||||
}
|
||||
|
||||
|
||||
bool AreaConstraint::canMoveToPosition(double xo, double yo, double zo, double xt, double yt, double zt)
|
||||
{
|
||||
if(!m_restrictsMovement) return true;
|
||||
|
||||
Vec3 *targetPos = Vec3::newTemp(xt, yt, zt);
|
||||
Minecraft *minecraft = Minecraft::GetInstance();
|
||||
|
||||
if(movementArea->contains( targetPos ) == contains)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Vec3 *origPos = Vec3::newTemp(xo, yo, zo);
|
||||
|
||||
double currDist = origPos->distanceTo(movementArea);
|
||||
double targetDist = targetPos->distanceTo(movementArea);
|
||||
return targetDist < currDist;
|
||||
}
|
||||
Reference in New Issue
Block a user