summaryrefslogtreecommitdiff
path: root/Runtime/NavMesh/NavMeshTypes.h
blob: cc260758a8e088219889361a4c835bf7328cd3d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#pragma once
#ifndef NAVMESH_TYPES_H_INCLUDED
#define NAVMESH_TYPES_H_INCLUDED

#include "Runtime/Math/Vector3.h"
#include "Runtime/Math/Matrix4x4.h"
#include "Runtime/Scripting/Backend/ScriptingTypes.h"
#include "DetourReference.h"
class NavMeshPath;

// Keep this enum in sync with the one defined in "NavMeshAgentBindings.txt"
enum ObstacleAvoidanceType
{
	kNoObstacleAvoidance = 0,
	kLowQualityObstacleAvoidance = 1,
	kMedQualityObstacleAvoidance = 2,
	kGoodQualityObstacleAvoidance = 3,
	kHighQualityObstacleAvoidance = 4
};

// Keep this struct in sync with the one defined in "NavMeshBindings.txt"
struct NavMeshHit
{
	Vector3f position;
	Vector3f normal;
	float    distance;
	int      mask;
	int      hit;
};

// Keep this struct in sync with the one defined in "NavMeshBindings.txt"
enum NavMeshPathStatus
{
	kPathComplete = 0,
	kPathPartial = 1,
	kPathInvalid = 2
};

// Keep this enum in sync with the one defined in "NavMeshBindings.txt"
enum OffMeshLinkType
{
	kLinkTypeManual = 0,
	kLinkTypeDropDown = 1,
	kLinkTypeJumpAcross = 2
};

// Keep this struct in sync with the one defined in "NavMeshBindings.txt"
struct OffMeshLinkData
{
	int m_Valid;
	int m_Activated;
	int m_InstanceID;
	OffMeshLinkType m_LinkType;
	Vector3f m_StartPos;
	Vector3f m_EndPos;
};

// Used in: NavMeshBindings.txt, NavMeshAgentBindings.txt, NavMeshPathBindings.txt
struct MonoNavMeshPath
{
	MonoNavMeshPath ()
	: native (NULL)
	, corners (SCRIPTING_NULL)
	{}

	NavMeshPath* native;
	ScriptingObjectPtr corners;
};

struct NavMeshCarveData
{
	Matrix4x4f transform;
	Vector3f size;
};

#endif