Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using FishNet.Object;
using FishNet.Serializing.Helping;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using FishNet.Object;
using FishNet.Serializing.Helping;
using UnityEngine.SceneManagement;

namespace FishNet.Managing.Scened
Expand Down Expand Up @@ -50,13 +50,13 @@ public SceneLoadData(string sceneName) : this(new string[] { sceneName }, null)
/// <summary>
/// </summary>
/// <param name = "sceneHandle">Scene to load by handle.</param>
public SceneLoadData(int sceneHandle) : this(new int[] { sceneHandle }, null) { }
public SceneLoadData(ulong sceneHandle) : this(new[] { sceneHandle }, null) { }

/// <summary>
/// </summary>
/// <param name = "sceneHandle">Scene to load by handle.</param>
/// <param name = "sceneName">Scene to load by name.</param>
public SceneLoadData(int sceneHandle, string sceneName) : this(new SceneLookupData(sceneHandle, sceneName)) { }
public SceneLoadData(ulong sceneHandle, string sceneName) : this(new SceneLookupData(sceneHandle, sceneName)) { }

/// <summary>
/// </summary>
Expand All @@ -76,7 +76,7 @@ public SceneLoadData(List<string> sceneNames) : this(sceneNames.ToArray(), null)
/// <summary>
/// </summary>
/// <param name = "sceneHandles">Scenes to load by handle.</param>
public SceneLoadData(List<int> sceneHandles) : this(sceneHandles.ToArray(), null) { }
public SceneLoadData(List<ulong> sceneHandles) : this(sceneHandles.ToArray(), null) { }

/// <summary>
/// </summary>
Expand All @@ -91,7 +91,7 @@ public SceneLoadData(string[] sceneNames) : this(sceneNames, null) { }
/// <summary>
/// </summary>
/// <param name = "sceneHandles">Scenes to load by handle.</param>
public SceneLoadData(int[] sceneHandles) : this(sceneHandles, null) { }
public SceneLoadData(ulong[] sceneHandles) : this(sceneHandles, null) { }

/// <summary>
/// </summary>
Expand Down Expand Up @@ -132,7 +132,7 @@ public SceneLoadData(string[] sceneNames, NetworkObject[] movedNetworkObjects)
/// </summary>
/// <param name = "sceneHandles">Scenes to load by handle.</param>
/// <param name = "movedNetworkObjects">NetworkObjects to move to the first specified scene.</param>
public SceneLoadData(int[] sceneHandles, NetworkObject[] movedNetworkObjects)
public SceneLoadData(ulong[] sceneHandles, NetworkObject[] movedNetworkObjects)
{
SceneLookupData[] datas = SceneLookupData.CreateData(sceneHandles);
Construct(datas, movedNetworkObjects);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public SceneUnloadData(string sceneName) : this(new string[] { sceneName }) { }
/// <summary>
/// </summary>
/// <param name = "sceneHandle">Scene to unload by handle.</param>
public SceneUnloadData(int sceneHandle) : this(new int[] { sceneHandle }) { }
public SceneUnloadData(ulong sceneHandle) : this(new[] { sceneHandle }) { }

/// <summary>
/// </summary>
Expand All @@ -65,7 +65,7 @@ public SceneUnloadData(List<string> sceneNames) : this(sceneNames.ToArray()) { }
/// <summary>
/// </summary>
/// <param name = "sceneHandles">Scenes to unload by handles.</param>
public SceneUnloadData(List<int> sceneHandles) : this(sceneHandles.ToArray()) { }
public SceneUnloadData(List<ulong> sceneHandles) : this(sceneHandles.ToArray()) { }

/// <summary>
/// </summary>
Expand All @@ -86,7 +86,7 @@ public SceneUnloadData(string[] sceneNames)
/// <summary>
/// </summary>
/// <param name = "sceneHandles">Scenes to unload by handles.</param>
public SceneUnloadData(int[] sceneHandles)
public SceneUnloadData(ulong[] sceneHandles)
{
SceneLookupDatas = SceneLookupData.CreateData(sceneHandles);
}
Expand Down
23 changes: 23 additions & 0 deletions Assets/FishNet/Runtime/Managing/Scened/SceneHandleExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using UnityEngine.SceneManagement;

namespace FishNet.Managing.Scened
{
internal static class SceneHandleExtensions
{
/// <summary>
/// Returns the raw handle identifier of a scene as a ulong.
/// </summary>
/// <remarks>
/// Unity 6000.5+ changed Scene.handle to an EntityId struct exposing GetRawData().
/// Earlier versions expose handle as an int.
/// </remarks>
public static ulong GetHandleId(this Scene s)
{
#if UNITY_6000_5_OR_NEWER
return s.handle.GetRawData();
#else
return (ulong)(uint)s.handle;
#endif
}
}
}
26 changes: 13 additions & 13 deletions Assets/FishNet/Runtime/Managing/Scened/SceneLookupData.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using GameKit.Dependencies.Utilities;
using System;
using System;
using System.Collections.Generic;
using GameKit.Dependencies.Utilities;
using UnityEngine.SceneManagement;

namespace FishNet.Managing.Scened
Expand All @@ -24,7 +24,7 @@ public static string[] GetNames(this SceneLookupData[] datas)
return names;
}


/// <summary>
/// Returns Names from SceneLookupData.
/// </summary>
Expand All @@ -48,7 +48,7 @@ public class SceneLookupData : IEquatable<SceneLookupData>
/// <summary>
/// Handle of the scene. If value is 0, then handle is not used.
/// </summary>
public int Handle;
public ulong Handle;
/// <summary>
/// Name of the scene.
/// </summary>
Expand All @@ -62,7 +62,7 @@ public string NameOnly
{
if (string.IsNullOrEmpty(Name))
return string.Empty;

string name = System.IO.Path.GetFileName(Name);
return RemoveUnityExtension(name);
}
Expand All @@ -89,7 +89,7 @@ public SceneLookupData() { }
/// <param name = "scene">Scene to generate from.</param>
public SceneLookupData(Scene scene)
{
Handle = scene.handle;
Handle = scene.GetHandleId();
Name = scene.name;
}

Expand All @@ -104,7 +104,7 @@ public SceneLookupData(string name)
/// <summary>
/// </summary>
/// <param name = "handle">Scene handle to generate from.</param>
public SceneLookupData(int handle)
public SceneLookupData(ulong handle)
{
Handle = handle;
}
Expand All @@ -113,7 +113,7 @@ public SceneLookupData(int handle)
/// </summary>
/// <param name = "handle">Scene handle to generate from.</param>
/// <param name = "name">Name to generate from if handle is 0.</param>
public SceneLookupData(int handle, string name)
public SceneLookupData(ulong handle, string name)
{
Handle = handle;
Name = name;
Expand Down Expand Up @@ -212,7 +212,7 @@ public override string ToString()
/// </summary>
/// <param name = "scene">Scene handle to create from.</param>
/// <returns></returns>
public static SceneLookupData CreateData(int handle) => new(handle);
public static SceneLookupData CreateData(ulong handle) => new(handle);

/// <summary>
/// Returns a SceneLookupData collection.
Expand All @@ -233,7 +233,7 @@ public override string ToString()
/// </summary>
/// <param name = "handles">Scene handles to create from.</param>
/// <returns></returns>
public static SceneLookupData[] CreateData(List<int> handles) => CreateData(handles.ToArray());
public static SceneLookupData[] CreateData(List<ulong> handles) => CreateData(handles.ToArray());

/// <summary>
/// Returns a SceneLookupData collection.
Expand Down Expand Up @@ -345,11 +345,11 @@ public static SceneLookupData[] ValidateData(SceneLookupData[] datas)
/// </summary>
/// <param name = "handles">Scene handles to create from.</param>
/// <returns></returns>
public static SceneLookupData[] CreateData(int[] handles)
public static SceneLookupData[] CreateData(ulong[] handles)
{
bool invalidFound = false;
List<SceneLookupData> result = new();
foreach (int item in handles)
foreach (var item in handles)
{
if (item == 0)
{
Expand Down Expand Up @@ -402,7 +402,7 @@ public Scene GetScene(out bool foundByHandle, bool warnIfDuplicates = true)
if (Handle != 0)
{
result = SceneManager.GetScene(Handle);
if (result.handle != 0)
if (result.GetHandleId() != 0)
foundByHandle = true;
}

Expand Down
Loading