mirror of
https://github.com/celisej567/mcpe.git
synced 2026-01-05 18:10:09 +03:00
* * Add BuildActionIntention crap * * Set Client and World projects to use MP compilation * asd * * Use the new BuildActionIntention to break and place blocks. * * Reverse engineer the IArea system. * * Copy break logic from survival into creative conditionally * * Reverse IBuildInput and MouseHandler * Replace the new relative paths in the client project with $(MC_ROOT) again * * Reverse Multitouch, MouseDevice * * Reverse a bunch of auxiliary classes for input. * * Use CustomInputHolder instead of holding inputs manually. * * Reverse a whole BUNCH of things! * * Add feedback textures to the gitignore. * * D-pad now renders! Also loads of other work. * * More Stuff * * Finish touch control bug fixing. * * Finalize work. * * One last thing.. * * Add a "cramped" mode to the options screen and start menu. * * Oh, forgot to do something
99 lines
1.9 KiB
C++
99 lines
1.9 KiB
C++
/********************************************************************
|
|
Minecraft: Pocket Edition - Decompilation Project
|
|
Copyright (C) 2023 iProgramInCpp
|
|
|
|
The following code is licensed under the BSD 1 clause license.
|
|
SPDX-License-Identifier: BSD-1-Clause
|
|
********************************************************************/
|
|
|
|
#pragma once
|
|
|
|
#include "common/Mth.hpp"
|
|
// Needed for when we're missing nullptr in multiple files
|
|
#include "common/Utils.hpp"
|
|
|
|
// NOTE: I don't think that Vec3 was implemented like that - it was
|
|
// probably implemented just like in Java. However, I think it looks
|
|
// nicer this way :)
|
|
|
|
class Vec3
|
|
{
|
|
public:
|
|
float x, y, z;
|
|
|
|
public:
|
|
bool clipX(const Vec3& a2, float a3, Vec3& a4) const;
|
|
bool clipY(const Vec3& a2, float a3, Vec3& a4) const;
|
|
bool clipZ(const Vec3& a2, float a3, Vec3& a4) const;
|
|
Vec3 normalize();
|
|
|
|
// this constructor is nice to have, but it's probably inlined
|
|
Vec3();
|
|
Vec3(float x, float y, float z);
|
|
|
|
// these are likely inlined
|
|
float distanceTo(const Vec3& b) const;
|
|
float distanceToSqr(const Vec3& b) const;
|
|
|
|
// these are also likely inlined, but I'll declare them in the header
|
|
Vec3 operator+(const Vec3& b)
|
|
{
|
|
return Vec3(x + b.x, y + b.y, z + b.z);
|
|
}
|
|
|
|
Vec3 operator-(const Vec3& b)
|
|
{
|
|
return Vec3(x - b.x, y - b.y, z - b.z);
|
|
}
|
|
|
|
void operator+=(const Vec3& b)
|
|
{
|
|
x += b.x;
|
|
y += b.y;
|
|
z += b.z;
|
|
}
|
|
|
|
void operator-=(const Vec3& b)
|
|
{
|
|
(*this) += -b;
|
|
}
|
|
|
|
void operator*=(float f)
|
|
{
|
|
x *= f;
|
|
y *= f;
|
|
z *= f;
|
|
}
|
|
|
|
Vec3 operator-() const
|
|
{
|
|
return Vec3(-x, -y, -z);
|
|
}
|
|
|
|
Vec3 operator*(float f) const
|
|
{
|
|
return Vec3(f * x, f * y, f * z);
|
|
}
|
|
|
|
Vec3 translate(float tx, float ty, float tz) const
|
|
{
|
|
return Vec3(x + tx, y + ty, z + tz);
|
|
}
|
|
|
|
float lengthSqr() const
|
|
{
|
|
return x * x + y * y + z * z;
|
|
}
|
|
|
|
float length() const
|
|
{
|
|
return sqrt(lengthSqr());
|
|
}
|
|
|
|
Vec3 scale(float scale) const
|
|
{
|
|
return Vec3(x * scale, y * scale, z * scale);
|
|
}
|
|
};
|
|
|