LeviLamina
Loading...
Searching...
No Matches
HitResult.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/actor/Actor.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/math/Vec3.h"
8#include "mc/deps/ecs/WeakEntityRef.h"
9#include "mc/world/level/BlockPos.h"
10#include "mc/world/phys/AABB.h"
11#include "mc/world/phys/HitResultType.h"
12
13// auto generated forward declare list
14// clang-format off
15class Actor;
16struct AABBHitResult;
17// clang-format on
18
19class HitResult {
20public:
21 [[nodiscard]] constexpr explicit operator bool() const {
22 return mType == HitResultType::Tile || mType == HitResultType::Entity;
23 }
24
25 HitResult& operator=(HitResult const&) = default;
26 HitResult(HitResult const&) = default;
27 HitResult(::HitResult&&) = default;
28
29 HitResult(
30 ::Vec3 const& startPos,
31 ::Vec3 const& rayDir,
32 ::Actor& entity,
33 ::Vec3 const& pos,
34 ::AABB const& entityAABB
35 )
36 : mStartPos(startPos),
37 mRayDir(rayDir),
38 mType(HitResultType::Entity),
39 mFacing(0),
40 mPos(pos),
41 mEntity(entity.getEntityContext().getWeakRef()),
42 mEntityAABB(entityAABB),
43 mIsHitLiquid(false),
44 mLiquidFacing(0),
45 mIndirectHit(false) {}
46
47public:
48 // member variables
49 // NOLINTBEGIN
50 ::Vec3 mStartPos;
51 ::Vec3 mRayDir;
52 ::HitResultType mType;
53 uchar mFacing;
54 ::BlockPos mBlock;
55 ::Vec3 mPos;
56 ::WeakEntityRef mEntity;
57 ::AABB mEntityAABB;
58 bool mIsHitLiquid;
59 uchar mLiquidFacing;
60 ::BlockPos mLiquid;
61 ::Vec3 mLiquidPos;
62 bool mIndirectHit;
63 // NOLINTEND
64
65public:
66 // member functions
67 // NOLINTBEGIN
68 MCAPI HitResult();
69
70 MCAPI explicit HitResult(::AABBHitResult const& hit);
71
72 MCAPI HitResult(::Vec3 const& startPos, ::Vec3 const& rayDir, ::Actor& entity);
73
74 MCAPI HitResult(::Vec3 const& startPos, ::Vec3 const& rayDir, ::Vec3 const& rayEnd);
75
76 MCAPI HitResult(
77 ::Vec3 const& startPos,
78 ::Vec3 const& rayDir,
79 ::BlockPos const& blockPos,
80 uchar facing,
81 ::Vec3 const& pos
82 );
83
84 MCAPI float distanceToSqr(::Actor const& otherEntity) const;
85
86 MCAPI ::Actor* getEntity() const;
87
88 MCAPI ::HitResult& operator=(::HitResult&&);
89
90 MCAPI void setIsHitLiquid(bool isHit, ::HitResult const& liquidHit);
91 // NOLINTEND
92
93public:
94 // constructor thunks
95 // NOLINTBEGIN
96 MCAPI void* $ctor();
97
98 MCAPI void* $ctor(::AABBHitResult const& hit);
99
100 MCAPI void* $ctor(::Vec3 const& startPos, ::Vec3 const& rayDir, ::Actor& entity);
101
102 MCAPI void* $ctor(::Vec3 const& startPos, ::Vec3 const& rayDir, ::Vec3 const& rayEnd);
103
104#ifdef LL_PLAT_C
105 MCAPI void* $ctor(::Vec3 const& startPos, ::Vec3 const& rayDir, ::Actor& entity, ::Vec3 const& pos);
106#endif
107
108 MCAPI void*
109 $ctor(::Vec3 const& startPos, ::Vec3 const& rayDir, ::BlockPos const& blockPos, uchar facing, ::Vec3 const& pos);
110 // NOLINTEND
111};
Definition AABB.h:18
Definition Actor.h:125
Definition BlockPos.h:21
Definition Vec3.h:10
Definition WeakEntityRef.h:14
Definition AABBHitResult.h:8