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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#pragma once
#include <map>
#include <string>
#include "Runtime/Misc/Allocator.h"
class Object;
enum BitMasks
{
// Can't modify these without breaking backwards compatibility!
kDefaultLayer = 0,
kNoFXLayer = 1,
kIgnoreRaycastLayer = 2,
kIgnoreCollisionLayer = 3,
kWaterLayer = 4,
kNumLayers = 32,
kDefaultLayerMask = 1 << kDefaultLayer,
kNoFXLayerMask = 1 << kNoFXLayer,
kIgnoreRaycastMask = 1 << kIgnoreRaycastLayer,
kIgnoreCollisionMask = 1 << kIgnoreCollisionLayer,
kPreUnity2UnusedLayer = 1 << 5,
kUserLayer = 8,
};
enum Tags
{
kUntagged = 0,
kRespawnTag = 1,
kFinishTag = 2,
kEditorOnlyTag = 3,
kMainCameraTag = 5,
kPlayerTag = 6,
kGameControllerTag = 7,
kFirstUserTag = 20000,
kLastUserTag = 30000,
kUndefinedTag = -1
};
// converts tag to string
UInt32 StringToTag (const std::string& tag);
UInt32 StringToTagAddIfUnavailable (const std::string& name);
const std::string& TagToString (UInt32 tag);
// Converts between layer [0..31] and string
UInt32 StringToLayerMask (const std::string& layerName);
const std::string& LayerToString (UInt32 layer);
UInt32 StringToLayer (const std::string& layer);
// Converts a layer mask (1 << [0..31]) to a string
const std::string& LayerMaskToString (UInt32 mask);
void RegisterLayer (UInt32 layer, const std::string& name);
typedef std::pair<const UInt32, std::string> UInt32StringPair;
typedef std::map<UInt32, std::string, std::less<UInt32>, STL_ALLOCATOR(kMemPermanent, UInt32StringPair) > UnsignedToString;
UnsignedToString GetTags ();
void RegisterDefaultTagsAndLayerMasks ();
Object& GetTagManager ();
// -------------------------------------------------------------------
// Global sorting layers:
//
// Defined globally, and can be reordered in the inspector. The drawing order is as shown in the inspector.
// Internally each global sorting layer has "unique ID" (GUID hashed into an int), and in-editor Renderers that want to
// use them refer to the layer by this ID.
//
// @TODO:
// * Do we need this "user friendly ID"?
int GetSortingLayerCount();
UnityStr GetSortingLayerName(int index);
UnityStr GetSortingLayerNameFromUniqueID(int id);
int GetSortingLayerUniqueID(int index);
int GetSortingLayerUserID(int index);
UnityStr GetSortingLayerNameFromValue(int layerValue);
int GetSortingLayerUserIDFromValue(int layerValue);
int GetSortingLayerUniqueIDFromValue(int layerValue);
int GetSortingLayerIndexFromValue(int layerValue);
// these return final sorting layer values
// (i.e. zero is always "default" - the returned value can be negative or positive)
int GetSortingLayerValueFromUniqueID(int id);
int GetSortingLayerValueFromUserID(int id);
int GetSortingLayerValueFromName(const UnityStr& name);
#if UNITY_EDITOR
void SetSortingLayerName(int index, const std::string& name);
void AddSortingLayer();
void UpdateSortingLayersOrder();
void SetSortingLayerLocked(int index, bool locked);
bool GetSortingLayerLocked(int index);
bool IsSortingLayerDefault(int index);
void SwapSortingLayers(int idx1, int idx2);
extern int g_LockedPickingLayers;
#endif // #if UNITY_EDITOR
|