/
Scene.cs
141 lines (111 loc) · 3.37 KB
/
Scene.cs
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Unity C# reference source
// Copyright (c) Unity Technologies. For terms of use, see
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
using System.Collections.Generic;
namespace UnityEngine.SceneManagement
{
[System.Serializable]
public partial struct Scene
{
internal enum LoadingState
{
NotLoaded = 0,
Loading = 1,
Loaded = 2,
Unloading = 3
}
internal Scene(int handle) { m_Handle = handle; }
[SerializeField]
[HideInInspector]
private int m_Handle;
public int handle { get { return m_Handle; } }
internal Scene.LoadingState loadingState
{
get { return GetLoadingStateInternal(handle); }
}
internal string guid
{
get { return GetGUIDInternal(handle); }
}
public bool IsValid()
{
return IsValidInternal(handle);
}
public string path
{
get { return GetPathInternal(handle); }
}
public string name
{
get { return GetNameInternal(handle); }
set { SetNameInternal(handle, value); }
}
public bool isLoaded
{
get { return GetIsLoadedInternal(handle); }
}
public int buildIndex
{
get { return GetBuildIndexInternal(handle); }
}
public bool isDirty
{
get { return GetIsDirtyInternal(handle); }
}
internal int dirtyID
{
get { return GetDirtyID(handle); }
}
public int rootCount
{
get { return GetRootCountInternal(handle); }
}
public bool isSubScene
{
get { return IsSubScene(handle); }
set { SetIsSubScene(handle, value); }
}
public GameObject[] GetRootGameObjects()
{
var rootGameObjects = new List<GameObject>(rootCount);
GetRootGameObjects(rootGameObjects);
return rootGameObjects.ToArray();
}
public void GetRootGameObjects(List<GameObject> rootGameObjects)
{
if (rootGameObjects.Capacity < rootCount)
rootGameObjects.Capacity = rootCount;
rootGameObjects.Clear();
if (!IsValid())
throw new System.ArgumentException("The scene is invalid.");
if (!Application.isPlaying && !isLoaded)
throw new System.ArgumentException("The scene is not loaded.");
if (rootCount == 0)
return;
GetRootGameObjectsInternal(handle, rootGameObjects);
}
public static bool operator==(Scene lhs, Scene rhs)
{
return lhs.handle == rhs.handle;
}
public static bool operator!=(Scene lhs, Scene rhs)
{
return lhs.handle != rhs.handle;
}
public override int GetHashCode()
{
return m_Handle;
}
public override bool Equals(object other)
{
if (!(other is Scene))
return false;
Scene rhs = (Scene)other;
return handle == rhs.handle;
}
internal void SetPathAndGuid(string path, string guid)
{
SetPathAndGUIDInternal(m_Handle, path, guid);
}
}
}