Compare commits

...

74 Commits

Author SHA1 Message Date
Albin Corén
7bb5e4f343
Merge branch 'master' into master 2018-04-24 20:09:20 +02:00
Albin Corén
5be6a02d19
Merge pull request #48 from TwoTenPvP/custom-transport
Custom transport
2018-04-24 19:58:14 +02:00
Albin Corén
822a8019d2 Completed custom transport system 2018-04-24 18:13:01 +02:00
6175e87c9d SwapEndian fix 2018-04-24 10:20:19 +02:00
0bf6b22717 Replaced all hashing with non.allocating hashing 2018-04-24 09:57:36 +02:00
Albin Corén
6aef964fa4 Added transport interface 2018-04-24 09:48:32 +02:00
a4fa4b943a Added non-allocating SHA1 2018-04-24 09:42:41 +02:00
Albin Corén
2cee9b0942 Compacted Receive loop 2018-04-23 21:21:18 +02:00
Albin Corén
52c4b4e0ef Fixed PrimitiveHasher cash regarding uint 2018-04-23 21:09:11 +02:00
Albin Corén
0b1146ea33 Added public primitive hasher class 2018-04-23 20:21:34 +02:00
Albin Corén
231c60d0c5 Fixed start rotation issue on NetworkedTransform 2018-04-23 17:20:03 +02:00
Albin Corén
711a072d65 Added Observer system 2018-04-23 16:23:40 +02:00
Albin Corén
c8160868f6 Added XML comments 2018-04-21 23:10:54 +02:00
Albin Corén
020e60aedc Fixed byte count reported by BitWriter 2018-04-21 15:34:06 +02:00
Albin Corén
3624ec4809 Reworked BinarySerializer to use BitWriter 2018-04-21 02:41:01 +02:00
Albin Corén
20b315b7fc Fixed start position on NetworkedTransform 2018-04-20 17:16:48 +02:00
Albin Corén
e0ee0862c6 Fixed position sync on player object spawn 2018-04-20 17:00:28 +02:00
Albin Corén
3abb311f82 Added NetworkSpawn invocation for SceneObjects when they get marked 2018-04-20 16:40:29 +02:00
Albin Corén
cb1bcaf14f Added Seconds history field to TrackedObject 2018-04-20 16:35:47 +02:00
Albin Corén
f5a7a83ccb Reworked the internal event loop & Lag compensator 2018-04-20 16:28:24 +02:00
Albin Corén
80b167ef48 Updated API reference to v1.0.3 2018-04-20 13:34:49 +02:00
Albin Corén
3ecd27d92b Fixed BitWriter issue 2018-04-20 13:31:57 +02:00
Albin Corén
7df402ca25
Merge pull request #45 from GabrielTofvesson/master
WriteBits
2018-04-20 13:26:39 +02:00
80399f387d Improved Partial write system
- Partial writes now only incur one alignment check per write
  - Upgraded WriteByte method to support rudimentary boundary checks
2018-04-20 13:23:23 +02:00
54f0df852c Merge remote-tracking branch 'upstream/master' 2018-04-20 13:05:17 +02:00
Albin Corén
8c755307b1
Update README.md 2018-04-20 13:02:32 +02:00
Albin Corén
c8f0e74894
Merge pull request #44 from TwoTenPvP/command-messages
Command messages
2018-04-20 12:58:48 +02:00
Albin Corén
0b3dec1bcf Removed debug logs 2018-04-20 12:47:06 +02:00
Albin Corén
916f4677f6 Fixed parameter read issue 2018-04-20 12:42:41 +02:00
Albin Corén
5663285309 Fixed issue causing the wrong clientId to get added 2018-04-20 12:35:33 +02:00
Albin Corén
5b2c77aec8 Started work on Command & RPC system 2018-04-20 12:33:53 +02:00
Albin Corén
4e16d9c913 Removed interactive mode from asset importer to allow for multiple assets to get imported 2018-04-19 19:44:55 +02:00
Albin Corén
3f29b7d8ef Updated API reference to v1.0.2 2018-04-19 19:15:11 +02:00
Albin Corén
438f4fa9c2 Cleaned up SyncedVar system 2018-04-19 17:32:00 +02:00
Albin Corén
afc45981f3 Added support for more array types to SyncedVars 2018-04-19 17:21:22 +02:00
Albin Corén
baa6518c0e Fixed ClientId cast issue 2018-04-19 16:05:26 +02:00
Albin Corén
82f34e3817 Merge branch 'master' of https://github.com/TwoTenPvP/MLAPI 2018-04-19 15:48:24 +02:00
Albin Corén
8e31dbe624 Removed allocations from NetId 2018-04-19 15:39:34 +02:00
Albin Corén
f5ebe8315a
Update README.md 2018-04-19 14:19:36 +02:00
Albin Corén
503964c475
Removed Planned features from Readme. See roadmap on Wiki 2018-04-19 13:59:13 +02:00
Albin Corén
9df6316c59 Fixed SyncedVarHook issue 2018-04-19 09:26:48 +02:00
Albin Corén
f45ac572ea Fixed issue with Target SyncedVar when running as host 2018-04-18 20:03:33 +02:00
Albin Corén
e8d58d292b Cleaned up SyncedVar system slightly 2018-04-18 19:55:08 +02:00
Albin Corén
36e8c79cca Added warnings when trying to send a message on a invalid MessageType 2018-04-18 15:22:47 +02:00
Albin Corén
76e720d7e9 Updated API reference to v1.0.1 2018-04-18 11:51:58 +02:00
Albin Corén
c13f3cd64d Supressed XML comments for Writer & Readere 2018-04-18 11:49:08 +02:00
Albin Corén
e342afe3ff Made PushArray private in BitWriter 2018-04-18 11:43:33 +02:00
Albin Corén
0e3e5ee392 Merge branch 'master' of https://github.com/TwoTenPvP/MLAPI 2018-04-18 11:42:15 +02:00
Albin Corén
ae14871518 Namespace & comment cleanup 2018-04-18 11:42:03 +02:00
Albin Corén
cfd2ab51a4
Update README.md 2018-04-17 23:41:21 +02:00
Albin Corén
2acb20e8ea Replaced ALL usage of BinaryWriter / BinaryReader with BitReader & BitWriter 2018-04-17 23:23:24 +02:00
Albin Corén
39c262e9e0 Removed Generic MLAPI message header allocation 2018-04-17 21:46:22 +02:00
Albin Corén
554010dbbc Switched NetworkConfig GetConfig to BitWriter 2018-04-17 21:41:24 +02:00
Albin Corén
d2d1b392f5 Merge branch 'master' of https://github.com/TwoTenPvP/MLAPI 2018-04-17 21:38:22 +02:00
Albin Corén
4d28f3420e Switched the Generic MLAPI message layer to BitWriter & BitReader 2018-04-17 21:38:08 +02:00
Albin Corén
85ecca2af9 Fixed SyncedVar issue 2018-04-17 21:36:55 +02:00
Albin Corén
90c5a86fb0 Fixed writebyte issue with BitWriter 2018-04-17 21:29:52 +02:00
Albin Corén
b799341f8a
Update README.md 2018-04-17 19:55:36 +02:00
Albin Corén
df109debf4 Fixed potential issue when syncing only targeted messages 2018-04-17 19:49:53 +02:00
Albin Corén
1838808860 Added Targeted SyncedVars that only sync to the owner of a object 2018-04-17 19:37:12 +02:00
Albin Corén
c96634f797
Merge pull request #42 from TwoTenPvP/bit-serializer
Bit serializer
2018-04-17 18:28:20 +02:00
Albin Corén
a94acfe34d Made ReadULong public 2018-04-17 18:26:22 +02:00
Albin Corén
2bde20bfdd
Update Protocol.md 2018-04-17 17:49:50 +02:00
Albin Corén
ef8ace51b4
Update README.md 2018-04-17 17:37:41 +02:00
Albin Corén
25a3abdde1 Added temp protocol docs & update API reference to 1.0 2018-04-17 17:06:05 +02:00
Albin Corén
c10e79a5e3 Added missing XML doc 2018-04-17 17:03:27 +02:00
Albin Corén
045e458aa8 Added EditorScripts for reference purpose and modified the NEtworkingManager to use the inpsector more 2018-04-17 17:02:18 +02:00
Albin Corén
7054220a40 Replaced deltaTime usage with Unscaled deltaTime 2018-04-17 14:52:13 +02:00
Albin Corén
89e666d09a Moved send and message handle methods to own class 2018-04-17 14:47:08 +02:00
Albin Corén
f8057144dc Added further duplication checks to netconfig 2018-04-17 10:18:30 +02:00
Albin Corén
a588584673 Added allocating Finalize overload to BitWriter 2018-04-14 09:08:18 +01:00
Albin Corén
8e84391710
Merge pull request #41 from GabrielTofvesson/bit-serializer
Optimized byte serialization
2018-04-13 18:43:01 +02:00
Albin Corén
21b5942106 Added spawn position and rotation to ConnectionApproval 2018-04-13 17:08:04 +01:00
7951d6a0a5 Merge remote-tracking branch 'upstream/master' 2018-04-12 17:05:28 +02:00
440 changed files with 8430 additions and 3380 deletions

View File

@ -0,0 +1,8 @@
using System;
[Serializable]
public class GithubAsset
{
public string browser_download_url;
public string name;
}

View File

@ -0,0 +1,13 @@
using System;
[Serializable]
public class GithubRelease
{
public string html_url;
public string tag_name;
public string name;
public string body;
public string published_at;
public bool prerelease;
public GithubAsset[] assets;
}

View File

@ -0,0 +1,8 @@
using System;
[Serializable]
public class GithubAsset
{
public string browser_download_url;
public string name;
}

View File

@ -0,0 +1,13 @@
using System;
[Serializable]
public class GithubRelease
{
public string html_url;
public string tag_name;
public string name;
public string body;
public string published_at;
public bool prerelease;
public GithubAsset[] assets;
}

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A45DBD43-D640-4562-9F24-6745269CEDF7}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MLAPI_Editor</RootNamespace>
<AssemblyName>MLAPI-Editor</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UnityEditor">
<HintPath>..\..\..\..\..\Program Files\Unity\Editor\Data\Managed\UnityEditor.dll</HintPath>
</Reference>
<Reference Include="UnityEngine">
<HintPath>..\..\..\..\..\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="GithubAsset.cs" />
<Compile Include="GithubRelease.cs" />
<Compile Include="MLAPIEditor.cs" />
<Compile Include="NetworkedAnimatorEditor.cs" />
<Compile Include="NetworkedBehaviourEditor.cs" />
<Compile Include="NetworkedObjectEditor.cs" />
<Compile Include="NetworkingManagerEditor.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TrackedObjectEditor.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MLAPI\MLAPI.csproj">
<Project>{EE431720-A9ED-43DC-9E74-10B693816D38}</Project>
<Name>MLAPI</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

173
MLAPI-Editor/MLAPIEditor.cs Normal file
View File

@ -0,0 +1,173 @@
using System;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
public class MLAPIEditor : EditorWindow
{
private GithubRelease[] releases = new GithubRelease[0];
private bool[] foldoutStatus = new bool[0];
private long lastUpdated = 0;
private string currentVersion;
[MenuItem("Window/MLAPI")]
public static void ShowWindow()
{
GetWindow<MLAPIEditor>();
}
private void Init()
{
lastUpdated = 0;
if (EditorPrefs.HasKey("MLAPI_version"))
currentVersion = EditorPrefs.GetString("MLAPI_version");
else
currentVersion = "None";
}
private void Awake()
{
Init();
}
private void OnFocus()
{
Init();
}
private void OnGUI()
{
if(foldoutStatus != null)
{
for (int i = 0; i < foldoutStatus.Length; i++)
{
if (releases[i] == null)
continue;
foldoutStatus[i] = EditorGUILayout.Foldout(foldoutStatus[i], releases[i].tag_name + " - " + releases[i].name);
if (foldoutStatus[i])
{
EditorGUI.indentLevel++;
EditorGUILayout.LabelField("Release notes", EditorStyles.boldLabel);
EditorGUILayout.LabelField(releases[i].body, EditorStyles.wordWrappedLabel);
EditorGUILayout.Space();
EditorGUILayout.Space();
if (releases[i].prerelease)
{
GUIStyle style = new GUIStyle(EditorStyles.boldLabel);
style.normal.textColor = new Color(1f, 0.5f, 0f);
EditorGUILayout.LabelField("Pre-release", style);
}
else
{
GUIStyle style = new GUIStyle(EditorStyles.boldLabel);
style.normal.textColor = new Color(0f, 1f, 0f);
EditorGUILayout.LabelField("Stable-release", style);
}
if (currentVersion == releases[i].tag_name)
{
GUIStyle boldStyle = new GUIStyle(EditorStyles.boldLabel);
boldStyle.normal.textColor = new Color(0.3f, 1f, 0.3f);
EditorGUILayout.LabelField("Installed", boldStyle);
}
EditorGUILayout.LabelField("Release date: " + DateTime.Parse(DateTime.Parse(releases[i].published_at).ToString()), EditorStyles.miniBoldLabel);
if(currentVersion != releases[i].tag_name && GUILayout.Button("Install"))
InstallRelease(i);
EditorGUI.indentLevel--;
}
}
}
GUILayout.BeginArea(new Rect(5, position.height - 20, position.width, 20));
if (GUILayout.Button("Check for updates"))
GetReleases();
GUILayout.EndArea();
string lastUpdatedString = lastUpdated == 0 ? "Never" : new DateTime(lastUpdated).ToShortTimeString();
EditorGUI.LabelField(new Rect(5, position.height - 40, position.width, 20), "Last checked: " + lastUpdatedString, EditorStyles.centeredGreyMiniLabel);
if ((DateTime.Now - new DateTime(lastUpdated)).Seconds > 3600)
GetReleases();
Repaint();
}
private void InstallRelease(int index)
{
for (int i = 0; i < releases[index].assets.Length; i++)
{
WWW www = new WWW(releases[index].assets[i].browser_download_url);
while (!www.isDone && string.IsNullOrEmpty(www.error))
{
EditorGUI.ProgressBar(new Rect(5, position.height - 60, position.width, 20), www.progress, "Installing " + i + "/" + releases[index].assets.Length);
}
if(!Directory.Exists(Application.dataPath + "/MLAPI/Lib/"))
Directory.CreateDirectory(Application.dataPath + "/MLAPI/Lib/");
File.WriteAllBytes(Application.dataPath + "/MLAPI/Lib/" + releases[index].assets[i].name, www.bytes);
if (releases[index].assets[i].name.EndsWith(".unitypackage"))
AssetDatabase.ImportPackage(Application.dataPath + "/MLAPI/Lib/" + releases[index].assets[i].name, false);
}
EditorPrefs.SetString("MLAPI_version", releases[index].tag_name);
currentVersion = releases[index].tag_name;
AssetDatabase.Refresh();
}
private void GetReleases()
{
lastUpdated = DateTime.Now.Ticks;
WWW www = new WWW("https://api.github.com/repos/TwoTenPvP/MLAPI/releases");
while(!www.isDone && string.IsNullOrEmpty(www.error))
{
EditorGUI.ProgressBar(new Rect(5, position.height - 60, position.width, 20), www.progress, "Fetching...");
}
string json = www.text;
//This makes it from a json array to the individual objects in the array.
//The JSON serializer cant take arrays. We have to split it up outselves.
List<string> releasesJson = new List<string>();
int depth = 0;
string currentObject = "";
for (int i = 1; i < json.Length - 1; i++)
{
if (json[i] == '[')
depth++;
else if (json[i] == ']')
depth--;
else if (json[i] == '{')
depth++;
else if (json[i] == '}')
depth--;
if ((depth == 0 && json[i] != ',') || depth > 0)
currentObject += json[i];
if (depth == 0 && json[i] == ',')
{
releasesJson.Add(currentObject);
currentObject = "";
}
}
releases = new GithubRelease[releasesJson.Count];
foldoutStatus = new bool[releasesJson.Count];
for (int i = 0; i < releasesJson.Count; i++)
{
releases[i] = JsonUtility.FromJson<GithubRelease>(releasesJson[i]);
if (i == 0)
foldoutStatus[i] = true;
else
foldoutStatus[i] = false;
}
}
}

View File

@ -0,0 +1,97 @@
using MLAPI.MonoBehaviours.Prototyping;
using System;
using UnityEditor.Animations;
using UnityEngine;
namespace UnityEditor
{
[CustomEditor(typeof(NetworkedAnimator), true)]
[CanEditMultipleObjects]
public class NetworkAnimatorEditor : Editor
{
private NetworkedAnimator networkedAnimatorTarget;
[NonSerialized]
private bool initialized;
private SerializedProperty animatorProperty;
private GUIContent animatorLabel;
void Init()
{
if (initialized)
return;
initialized = true;
networkedAnimatorTarget = target as NetworkedAnimator;
animatorProperty = serializedObject.FindProperty("_animator");
animatorLabel = new GUIContent("Animator", "The Animator component to synchronize.");
}
public override void OnInspectorGUI()
{
Init();
serializedObject.Update();
DrawControls();
serializedObject.ApplyModifiedProperties();
}
void DrawControls()
{
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(animatorProperty, animatorLabel);
if (EditorGUI.EndChangeCheck())
networkedAnimatorTarget.ResetParameterOptions();
if (networkedAnimatorTarget.animator == null)
return;
var controller = networkedAnimatorTarget.animator.runtimeAnimatorController as AnimatorController;
if (controller != null)
{
var showWarning = false;
EditorGUI.indentLevel += 1;
int i = 0;
foreach (var p in controller.parameters)
{
if (i >= 32)
{
showWarning = true;
break;
}
bool oldSend = networkedAnimatorTarget.GetParameterAutoSend(i);
bool send = EditorGUILayout.Toggle(p.name, oldSend);
if (send != oldSend)
{
networkedAnimatorTarget.SetParameterAutoSend(i, send);
EditorUtility.SetDirty(target);
}
i += 1;
}
if (showWarning)
EditorGUILayout.HelpBox("NetworkAnimator can only select between the first 32 parameters in a mecanim controller", MessageType.Warning);
EditorGUI.indentLevel -= 1;
}
if (Application.isPlaying)
{
EditorGUILayout.Separator();
if (networkedAnimatorTarget.param0 != "")
EditorGUILayout.LabelField("Param 0", networkedAnimatorTarget.param0);
if (networkedAnimatorTarget.param1 != "")
EditorGUILayout.LabelField("Param 1", networkedAnimatorTarget.param1);
if (networkedAnimatorTarget.param2 != "")
EditorGUILayout.LabelField("Param 2", networkedAnimatorTarget.param2);
if (networkedAnimatorTarget.param3 != "")
EditorGUILayout.LabelField("Param 3", networkedAnimatorTarget.param3);
if (networkedAnimatorTarget.param4 != "")
EditorGUILayout.LabelField("Param 4", networkedAnimatorTarget.param4);
}
}
}
}

View File

@ -0,0 +1,84 @@
using MLAPI.Attributes;
using MLAPI.MonoBehaviours.Core;
using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
namespace UnityEditor
{
[CustomEditor(typeof(NetworkedBehaviour), true)]
[CanEditMultipleObjects]
public class NetworkedBehaviourInspector : Editor
{
private bool initialized;
protected List<string> syncedVarNames = new List<string>();
private GUIContent syncedVarLabelGuiContent;
private void Init(MonoScript script)
{
initialized = true;
syncedVarLabelGuiContent = new GUIContent("SyncedVar", "This variable has been marked with the [SyncedVar] attribute.");
FieldInfo[] fields = script.GetClass().GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.NonPublic);
for (int i = 0; i < fields.Length; i++)
{
Attribute[] attributes = (Attribute[])fields[i].GetCustomAttributes(typeof(SyncedVar), true);
if (attributes.Length > 0)
syncedVarNames.Add(fields[i].Name);
}
}
public override void OnInspectorGUI()
{
if (!initialized)
{
serializedObject.Update();
SerializedProperty scriptProperty = serializedObject.FindProperty("m_Script");
if (scriptProperty == null)
return;
MonoScript targetScript = scriptProperty.objectReferenceValue as MonoScript;
Init(targetScript);
}
EditorGUI.BeginChangeCheck();
serializedObject.Update();
SerializedProperty property = serializedObject.GetIterator();
bool expanded = true;
while (property.NextVisible(expanded))
{
bool isSyncVar = syncedVarNames.Contains(property.name);
if (property.propertyType == SerializedPropertyType.ObjectReference)
{
if (property.name == "m_Script")
EditorGUI.BeginDisabledGroup(true);
EditorGUILayout.PropertyField(property, true);
if (isSyncVar)
GUILayout.Label(syncedVarLabelGuiContent, EditorStyles.miniLabel, GUILayout.Width(EditorStyles.miniLabel.CalcSize(syncedVarLabelGuiContent).x));
if (property.name == "m_Script")
EditorGUI.EndDisabledGroup();
}
else
{
EditorGUILayout.BeginHorizontal();
EditorGUILayout.PropertyField(property, true);
if (isSyncVar)
GUILayout.Label(syncedVarLabelGuiContent, EditorStyles.miniLabel, GUILayout.Width(EditorStyles.miniLabel.CalcSize(syncedVarLabelGuiContent).x));
EditorGUILayout.EndHorizontal();
}
expanded = false;
}
serializedObject.ApplyModifiedProperties();
EditorGUI.EndChangeCheck();
}
}
}

View File

@ -0,0 +1,68 @@
using MLAPI.MonoBehaviours.Core;
using UnityEngine;
namespace UnityEditor
{
[CustomEditor(typeof(NetworkedObject), true)]
[CanEditMultipleObjects]
public class NetworkedObjectEditor : Editor
{
private bool initialized;
private NetworkedObject networkedObject;
private bool showObservers;
private void Init()
{
if (initialized)
return;
initialized = true;
networkedObject = (NetworkedObject)target;
}
public override void OnInspectorGUI()
{
Init();
if (NetworkingManager.singleton == null || (!NetworkingManager.singleton.isServer && !NetworkingManager.singleton.isClient))
base.OnInspectorGUI(); //Only run this if we are NOT running server. This is where the ServerOnly box is drawn
if (!networkedObject.isSpawned && NetworkingManager.singleton != null && NetworkingManager.singleton.isServer)
{
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(new GUIContent("Spawn", "Spawns the object across the network"));
if (GUILayout.Toggle(false, "Spawn", EditorStyles.miniButtonLeft))
{
networkedObject.Spawn();
EditorUtility.SetDirty(target);
}
EditorGUILayout.EndHorizontal();
}
else if(networkedObject.isSpawned)
{
EditorGUILayout.LabelField("NetworkId: ", networkedObject.NetworkId.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("OwnerId: ", networkedObject.OwnerClientId.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("isSpawned: ", networkedObject.isSpawned.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("isLocalPlayer: ", networkedObject.isLocalPlayer.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("isOwner: ", networkedObject.isOwner.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("isPoolObject: ", networkedObject.isPlayerObject.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("isPlayerObject: ", networkedObject.isPlayerObject.ToString(), EditorStyles.label);
if (networkedObject.observers != null && networkedObject.observers.Count > 0)
{
showObservers = EditorGUILayout.Foldout(showObservers, "Observers");
if (showObservers)
{
EditorGUI.indentLevel += 1;
foreach (var o in networkedObject.observers)
{
if (NetworkingManager.singleton.ConnectedClients[o].PlayerObject != null)
EditorGUILayout.ObjectField("ClientId: " + o, NetworkingManager.singleton.ConnectedClients[o].PlayerObject, typeof(GameObject), false);
else
EditorGUILayout.TextField("ClientId: " + o, EditorStyles.label);
}
EditorGUI.indentLevel -= 1;
}
}
}
}
}
}

View File

@ -0,0 +1,75 @@
using MLAPI.MonoBehaviours.Core;
using UnityEditor;
using UnityEngine;
using UnityEditorInternal;
[CustomEditor(typeof(NetworkingManager), true)]
[CanEditMultipleObjects]
public class NetworkingManagerEditor : Editor
{
private ReorderableList networkedObjectList;
private NetworkingManager networkingManager;
private bool initialized;
private void Init()
{
if (initialized)
return;
initialized = true;
networkingManager = (NetworkingManager)target;
}
private void OnEnable()
{
networkedObjectList = new ReorderableList(serializedObject, serializedObject.FindProperty("NetworkConfig").FindPropertyRelative("NetworkedPrefabs"), true, true, true, true);
networkedObjectList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
{
var element = networkedObjectList.serializedProperty.GetArrayElementAtIndex(index);
rect.y += 2;
EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width - 30, EditorGUIUtility.singleLineHeight),
element.FindPropertyRelative("prefab"), GUIContent.none);
EditorGUI.PropertyField(new Rect(rect.x + rect.width - 30, rect.y, 30, EditorGUIUtility.singleLineHeight),
element.FindPropertyRelative("playerPrefab"), GUIContent.none);
};
networkedObjectList.drawHeaderCallback = (Rect rect) => {
EditorGUI.LabelField(rect, "Networked Prefabs");
};
}
public override void OnInspectorGUI()
{
Init();
if (!networkingManager.isServer && !networkingManager.isClient)
{
EditorGUILayout.Space();
serializedObject.Update();
networkedObjectList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
base.OnInspectorGUI(); //Only draw if we don't have a running client or server
}
else
{
string instanceType = "";
if (networkingManager.isHost)
instanceType = "Host";
else if (networkingManager.isServer)
instanceType = "Server";
else if (networkingManager.isClient)
instanceType = "Client";
EditorGUILayout.HelpBox("You cannot edit the NetworkConfig when a " + instanceType + " is running", MessageType.Info);
if (GUILayout.Toggle(false, "Stop " + instanceType, EditorStyles.miniButtonMid))
{
if (networkingManager.isHost)
networkingManager.StopHost();
else if (networkingManager.isServer)
networkingManager.StopServer();
else if (networkingManager.isClient)
networkingManager.StopClient();
}
}
Repaint();
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MLAPI-Editor")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MLAPI-Editor")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a45dbd43-d640-4562-9f24-6745269cedf7")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,35 @@
using MLAPI.MonoBehaviours.Core;
using UnityEngine;
namespace UnityEditor
{
[CustomEditor(typeof(TrackedObject), true)]
[CanEditMultipleObjects]
public class TrackedObjectEditor : Editor
{
private TrackedObject trackedObject;
private bool initialized;
private void Init()
{
if (initialized)
return;
trackedObject = (TrackedObject)target;
initialized = true;
}
public override void OnInspectorGUI()
{
Init();
base.OnInspectorGUI();
if(NetworkingManager.singleton != null && NetworkingManager.singleton.isServer)
{
EditorGUILayout.LabelField("Total points: ", trackedObject.TotalPoints.ToString(), EditorStyles.label);
EditorGUILayout.LabelField("Avg time between points: ", trackedObject.AvgTimeBetweenPointsMs.ToString() + " ms", EditorStyles.label);
EditorGUILayout.LabelField("Total history: ", trackedObject.TotalTimeHistory.ToString() + " seconds", EditorStyles.label);
}
Repaint();
}
}
}

View File

@ -5,6 +5,8 @@ VisualStudioVersion = 15.0.27130.2027
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MLAPI", "MLAPI\MLAPI.csproj", "{EE431720-A9ED-43DC-9E74-10B693816D38}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MLAPI-Editor", "MLAPI-Editor\MLAPI-Editor.csproj", "{A45DBD43-D640-4562-9F24-6745269CEDF7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -18,6 +20,12 @@ Global
{EE431720-A9ED-43DC-9E74-10B693816D38}.Development|Any CPU.Build.0 = Development|Any CPU
{EE431720-A9ED-43DC-9E74-10B693816D38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE431720-A9ED-43DC-9E74-10B693816D38}.Release|Any CPU.Build.0 = Release|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Development|Any CPU.ActiveCfg = Debug|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Development|Any CPU.Build.0 = Debug|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A45DBD43-D640-4562-9F24-6745269CEDF7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -3,7 +3,7 @@
namespace MLAPI.Attributes
{
/// <summary>
/// The attribute to use for variables that should be automatically. replicated from Server to Client.
/// The attribute to use for fields that should be ignored by the BinarySerializer
/// </summary>
[AttributeUsage(AttributeTargets.Field)]
public class BinaryIgnore : Attribute

View File

@ -0,0 +1,13 @@
using System;
namespace MLAPI.Attributes
{
/// <summary>
/// This attribute is used to specify that this is a remote Client RPC
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class ClientRpc : Attribute
{
}
}

View File

@ -0,0 +1,13 @@
using System;
namespace MLAPI.Attributes
{
/// <summary>
/// This attribute is used to specify that this is a remote Command
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class Command : Attribute
{
}
}

View File

@ -11,6 +11,10 @@ namespace MLAPI.Attributes
/// <summary>
/// The method name to invoke when the SyncVar get's updated.
/// </summary>
public string hook;
public string hookMethodName;
/// <summary>
/// If true, the syncedVar will only be synced to the owner.
/// </summary>
public bool target;
}
}

View File

@ -0,0 +1,13 @@
using System;
namespace MLAPI.Attributes
{
/// <summary>
/// This attribute is used to specify that this is a remote Target RPC
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class TargetRpc : Attribute
{
}
}

40
MLAPI/Data/Cache.cs Normal file
View File

@ -0,0 +1,40 @@
using MLAPI.NetworkingManagerComponents.Binary;
using System.Collections.Generic;
namespace MLAPI.Data
{
internal static class Cache
{
internal static Dictionary<string, ulong> messageAttributeHashes = new Dictionary<string, ulong>();
internal static Dictionary<ulong, string> messageAttributeNames = new Dictionary<ulong, string>();
internal static ulong GetMessageAttributeHash(string name)
{
if (messageAttributeHashes.ContainsKey(name))
return messageAttributeHashes[name];
ulong value = PrimitiveHasher.GetULongHash(name);
messageAttributeHashes.Add(name, value);
messageAttributeNames.Add(value, name);
return value;
}
internal static string GetAttributeMethodName(ulong hash)
{
if (messageAttributeNames.ContainsKey(hash))
return messageAttributeNames[hash];
else
return string.Empty;
}
internal static void RegisterMessageAttributeName(string name)
{
if (messageAttributeHashes.ContainsKey(name))
return;
ulong value = PrimitiveHasher.GetULongHash(name);
messageAttributeHashes.Add(name, value);
messageAttributeNames.Add(value, name);
}
}
}

View File

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine.Networking;
namespace MLAPI.Data
{
@ -19,7 +15,7 @@ namespace MLAPI.Data
/// <summary>
/// The Transport QOS type
/// </summary>
public QosType Type;
public ChannelType Type;
/// <summary>
/// Wheter or not the channel should be encrypted
/// </summary>

View File

@ -1,4 +1,9 @@
namespace MLAPI.Data
using MLAPI.NetworkingManagerComponents.Binary;
using System;
using System.Reflection;
using UnityEngine;
namespace MLAPI.Data
{
/// <summary>
/// The datatype used to classify SyncedVars
@ -7,7 +12,6 @@
{
Bool,
Byte,
Char,
Double,
Single,
Int,
@ -21,6 +25,622 @@
Vector3,
Vector2,
Quaternion,
ByteArray
BoolArray,
ByteArray,
DoubleArray,
SingleArray,
IntArray,
LongArray,
SByteArray,
ShortArray,
UIntArray,
ULongArray,
UShortArray,
StringArray,
Vector3Array,
Vector2Array,
QuaternionArray,
Invalid
}
internal static class FieldTypeHelper
{
internal static object ReadFieldType(BitReader reader, FieldType fieldType)
{
switch (fieldType)
{
case FieldType.Bool:
return reader.ReadBool();
case FieldType.Byte:
return reader.ReadByte();
case FieldType.Double:
return reader.ReadDouble();
case FieldType.Single:
return reader.ReadFloat();
case FieldType.Int:
return reader.ReadInt();
case FieldType.Long:
return reader.ReadLong();
case FieldType.SByte:
return reader.ReadSByte();
case FieldType.Short:
return reader.ReadShort();
case FieldType.UInt:
return reader.ReadUInt();
case FieldType.ULong:
return reader.ReadULong();
case FieldType.UShort:
return reader.ReadUShort();
case FieldType.String:
return reader.ReadString();
case FieldType.Vector3:
Vector3 vector3 = Vector3.zero;
vector3.x = reader.ReadFloat();
vector3.y = reader.ReadFloat();
vector3.z = reader.ReadFloat();
return vector3;
case FieldType.Vector2:
Vector2 vector2 = Vector2.zero;
vector2.x = reader.ReadFloat();
vector2.y = reader.ReadFloat();
return vector2;
case FieldType.Quaternion:
Vector3 eulerAngle = Vector3.zero;
eulerAngle.x = reader.ReadFloat();
eulerAngle.y = reader.ReadFloat();
eulerAngle.z = reader.ReadFloat();
return Quaternion.Euler(eulerAngle);
case FieldType.BoolArray:
ushort boolCount = reader.ReadUShort();
bool[] bools = new bool[boolCount];
for (int j = 0; j < boolCount; j++)
bools[j] = reader.ReadBool();
return bools;
case FieldType.ByteArray:
return reader.ReadByteArray();
case FieldType.DoubleArray:
return reader.ReadDoubleArray();
case FieldType.SingleArray:
return reader.ReadFloatArray();
case FieldType.IntArray:
return reader.ReadIntArray();
case FieldType.LongArray:
return reader.ReadLongArray();
case FieldType.SByteArray:
return reader.ReadSByteArray();
case FieldType.ShortArray:
return reader.ReadShortArray();
case FieldType.UIntArray:
return reader.ReadUIntArray();
case FieldType.ULongArray:
return reader.ReadULongArray();
case FieldType.UShortArray:
return reader.ReadUShortArray();
case FieldType.StringArray:
ushort stringCount = reader.ReadUShort();
string[] strings = new string[stringCount];
for (int j = 0; j < stringCount; j++)
strings[j] = reader.ReadString();
return strings;
case FieldType.Vector3Array:
ushort vector3Count = reader.ReadUShort();
Vector3[] vector3s = new Vector3[vector3Count];
for (int j = 0; j < vector3Count; j++)
{
Vector3 vec3 = Vector3.zero;
vec3.x = reader.ReadFloat();
vec3.y = reader.ReadFloat();
vec3.z = reader.ReadFloat();
vector3s[j] = vec3;
}
return vector3s;
case FieldType.Vector2Array:
ushort vector2Count = reader.ReadUShort();
Vector2[] vector2s = new Vector2[vector2Count];
for (int j = 0; j < vector2Count; j++)
{
Vector2 vec2 = Vector2.zero;
vec2.x = reader.ReadFloat();
vec2.y = reader.ReadFloat();
vector2s[j] = vec2;
}
return vector2s;
case FieldType.QuaternionArray:
ushort quaternionCount = reader.ReadUShort();
Quaternion[] quaternions = new Quaternion[quaternionCount];
for (int j = 0; j < quaternionCount; j++)
{
Vector3 vec3 = Vector3.zero;
vec3.x = reader.ReadFloat();
vec3.y = reader.ReadFloat();
vec3.z = reader.ReadFloat();
quaternions[j] = Quaternion.Euler(vec3);
}
return quaternions;
case FieldType.Invalid:
return null;
}
return null;
}
internal static void WriteFieldType(BitWriter writer, object value, FieldType fieldType)
{
switch (fieldType)
{
case FieldType.Bool:
writer.WriteBool((bool)value);
break;
case FieldType.Byte:
writer.WriteByte((byte)value);
break;
case FieldType.Double:
writer.WriteDouble((double)value);
break;
case FieldType.Single:
writer.WriteFloat((float)value);
break;
case FieldType.Int:
writer.WriteInt((int)value);
break;
case FieldType.Long:
writer.WriteLong((long)value);
break;
case FieldType.SByte:
writer.WriteSByte((sbyte)value);
break;
case FieldType.Short:
writer.WriteShort((short)value);
break;
case FieldType.UInt:
writer.WriteUInt((uint)value);
break;
case FieldType.ULong:
writer.WriteULong((ulong)value);
break;
case FieldType.UShort:
writer.WriteUShort((ushort)value);
break;
case FieldType.String:
writer.WriteString((string)value);
break;
case FieldType.Vector3:
Vector3 vector3 = (Vector3)value;
writer.WriteFloat(vector3.x);
writer.WriteFloat(vector3.y);
writer.WriteFloat(vector3.z);
break;
case FieldType.Vector2:
Vector2 vector2 = (Vector2)value;
writer.WriteFloat(vector2.x);
writer.WriteFloat(vector2.y);
break;
case FieldType.Quaternion:
Vector3 euler = ((Quaternion)value).eulerAngles;
writer.WriteFloat(euler.x);
writer.WriteFloat(euler.y);
writer.WriteFloat(euler.z);
break;
case FieldType.BoolArray:
bool[] bools = (bool[])value;
writer.WriteUShort((ushort)bools.Length);
for (int j = 0; j < bools.Length; j++)
writer.WriteBool(bools[j]);
break;
case FieldType.ByteArray:
writer.WriteByteArray((byte[])value);
break;
case FieldType.DoubleArray:
writer.WriteDoubleArray((double[])value);
break;
case FieldType.SingleArray:
writer.WriteFloatArray((float[])value);
break;
case FieldType.IntArray:
writer.WriteIntArray((int[])value);
break;
case FieldType.LongArray:
writer.WriteLongArray((long[])value);
break;
case FieldType.SByteArray:
writer.WriteSByteArray((sbyte[])value);
break;
case FieldType.ShortArray:
writer.WriteShortArray((short[])value);
break;
case FieldType.UIntArray:
writer.WriteUIntArray((uint[])value);
break;
case FieldType.ULongArray:
writer.WriteULongArray((ulong[])value);
break;
case FieldType.UShortArray:
writer.WriteUShortArray((ushort[])value);
break;
case FieldType.StringArray:
string[] strings = (string[])value;
writer.WriteUShort((ushort)strings.Length);
for (int j = 0; j < strings.Length; j++)
writer.WriteString(strings[j]);
break;
case FieldType.Vector3Array:
Vector3[] vector3s = (Vector3[])value;
writer.WriteUShort((ushort)vector3s.Length);
for (int j = 0; j < vector3s.Length; j++)
{
writer.WriteFloat(vector3s[j].x);
writer.WriteFloat(vector3s[j].y);
writer.WriteFloat(vector3s[j].z);
}
break;
case FieldType.Vector2Array:
Vector2[] vector2s = (Vector2[])value;
writer.WriteUShort((ushort)vector2s.Length);
for (int j = 0; j < vector2s.Length; j++)
{
writer.WriteFloat(vector2s[j].x);
writer.WriteFloat(vector2s[j].y);
}
break;
case FieldType.QuaternionArray:
Quaternion[] quaternions = (Quaternion[])value;
writer.WriteUShort((ushort)quaternions.Length);
for (int j = 0; j < quaternions.Length; j++)
{
writer.WriteFloat(quaternions[j].eulerAngles.x);
writer.WriteFloat(quaternions[j].eulerAngles.y);
writer.WriteFloat(quaternions[j].eulerAngles.z);
}
break;
}
}
internal static void WriteFieldType(BitWriter writer, FieldInfo field, object fieldInstance, FieldType fieldType)
{
switch (fieldType)
{
case FieldType.Bool:
writer.WriteBool((bool)field.GetValue(fieldInstance));
break;
case FieldType.Byte:
writer.WriteByte((byte)field.GetValue(fieldInstance));
break;
case FieldType.Double:
writer.WriteDouble((double)field.GetValue(fieldInstance));
break;
case FieldType.Single:
writer.WriteFloat((float)field.GetValue(fieldInstance));
break;
case FieldType.Int:
writer.WriteInt((int)field.GetValue(fieldInstance));
break;
case FieldType.Long:
writer.WriteLong((long)field.GetValue(fieldInstance));
break;
case FieldType.SByte:
writer.WriteSByte((sbyte)field.GetValue(fieldInstance));
break;
case FieldType.Short:
writer.WriteShort((short)field.GetValue(fieldInstance));
break;
case FieldType.UInt:
writer.WriteUInt((uint)field.GetValue(fieldInstance));
break;
case FieldType.ULong:
writer.WriteULong((ulong)field.GetValue(fieldInstance));
break;
case FieldType.UShort:
writer.WriteUShort((ushort)field.GetValue(fieldInstance));
break;
case FieldType.String:
writer.WriteString((string)field.GetValue(fieldInstance));
break;
case FieldType.Vector3:
Vector3 vector3 = (Vector3)field.GetValue(fieldInstance);
writer.WriteFloat(vector3.x);
writer.WriteFloat(vector3.y);
writer.WriteFloat(vector3.z);
break;
case FieldType.Vector2:
Vector2 vector2 = (Vector2)field.GetValue(fieldInstance);
writer.WriteFloat(vector2.x);
writer.WriteFloat(vector2.y);
break;
case FieldType.Quaternion:
Vector3 euler = ((Quaternion)field.GetValue(fieldInstance)).eulerAngles;
writer.WriteFloat(euler.x);
writer.WriteFloat(euler.y);
writer.WriteFloat(euler.z);
break;
case FieldType.BoolArray:
bool[] bools = (bool[])field.GetValue(fieldInstance);
writer.WriteUShort((ushort)bools.Length);
for (int j = 0; j < bools.Length; j++)
writer.WriteBool(bools[j]);
break;
case FieldType.ByteArray:
writer.WriteByteArray((byte[])field.GetValue(fieldInstance));
break;
case FieldType.DoubleArray:
writer.WriteDoubleArray((double[])field.GetValue(fieldInstance));
break;
case FieldType.SingleArray:
writer.WriteFloatArray((float[])field.GetValue(fieldInstance));
break;
case FieldType.IntArray:
writer.WriteIntArray((int[])field.GetValue(fieldInstance));
break;
case FieldType.LongArray:
writer.WriteLongArray((long[])field.GetValue(fieldInstance));
break;
case FieldType.SByteArray:
writer.WriteSByteArray((sbyte[])field.GetValue(fieldInstance));
break;
case FieldType.ShortArray:
writer.WriteShortArray((short[])field.GetValue(fieldInstance));
break;
case FieldType.UIntArray:
writer.WriteUIntArray((uint[])field.GetValue(fieldInstance));
break;
case FieldType.ULongArray:
writer.WriteULongArray((ulong[])field.GetValue(fieldInstance));
break;
case FieldType.UShortArray:
writer.WriteUShortArray((ushort[])field.GetValue(fieldInstance));
break;
case FieldType.StringArray:
string[] strings = (string[])field.GetValue(fieldInstance);
writer.WriteUShort((ushort)strings.Length);
for (int j = 0; j < strings.Length; j++)
writer.WriteString(strings[j]);
break;
case FieldType.Vector3Array:
Vector3[] vector3s = (Vector3[])field.GetValue(fieldInstance);
writer.WriteUShort((ushort)vector3s.Length);
for (int j = 0; j < vector3s.Length; j++)
{
writer.WriteFloat(vector3s[j].x);
writer.WriteFloat(vector3s[j].y);
writer.WriteFloat(vector3s[j].z);
}
break;
case FieldType.Vector2Array:
Vector2[] vector2s = (Vector2[])field.GetValue(fieldInstance);
writer.WriteUShort((ushort)vector2s.Length);
for (int j = 0; j < vector2s.Length; j++)
{
writer.WriteFloat(vector2s[j].x);
writer.WriteFloat(vector2s[j].y);
}
break;
case FieldType.QuaternionArray:
Quaternion[] quaternions = (Quaternion[])field.GetValue(fieldInstance);
writer.WriteUShort((ushort)quaternions.Length);
for (int j = 0; j < quaternions.Length; j++)
{
writer.WriteFloat(quaternions[j].eulerAngles.x);
writer.WriteFloat(quaternions[j].eulerAngles.y);
writer.WriteFloat(quaternions[j].eulerAngles.z);
}
break;
}
}
internal static FieldType GetFieldType(Type type)
{
if (type == typeof(bool))
return FieldType.Bool;
else if (type == typeof(byte))
return FieldType.Byte;
else if (type == typeof(double))
return FieldType.Double;
else if (type == typeof(float))
return FieldType.Single;
else if (type == typeof(int))
return FieldType.Int;
else if (type == typeof(long))
return FieldType.Long;
else if (type == typeof(sbyte))
return FieldType.SByte;
else if (type == typeof(short))
return FieldType.Short;
else if (type == typeof(uint))
return FieldType.UInt;
else if (type == typeof(ulong))
return FieldType.ULong;
else if (type == typeof(ushort))
return FieldType.UShort;
else if (type == typeof(string))
return FieldType.String;
else if (type == typeof(Vector3))
return FieldType.Vector3;
else if (type == typeof(Vector2))
return FieldType.Vector2;
else if (type == typeof(Quaternion))
return FieldType.Quaternion;
else if (type == typeof(bool[]))
return FieldType.BoolArray;
else if (type == typeof(byte[]))
return FieldType.ByteArray;
else if (type == typeof(double[]))
return FieldType.DoubleArray;
else if (type == typeof(float[]))
return FieldType.SingleArray;
else if (type == typeof(int[]))
return FieldType.IntArray;
else if (type == typeof(long[]))
return FieldType.LongArray;
else if (type == typeof(sbyte[]))
return FieldType.SByteArray;
else if (type == typeof(short[]))
return FieldType.ShortArray;
else if (type == typeof(uint[]))
return FieldType.UIntArray;
else if (type == typeof(ulong[]))
return FieldType.ULongArray;
else if (type == typeof(ushort[]))
return FieldType.UShortArray;
else if (type == typeof(string[]))
return FieldType.StringArray;
else if (type == typeof(Vector3[]))
return FieldType.Vector3Array;
else if (type == typeof(Vector2[]))
return FieldType.Vector2Array;
else if (type == typeof(Quaternion[]))
return FieldType.QuaternionArray;
else
return FieldType.Invalid;
}
internal static object[] ReadObjects(BitReader reader, byte paramCount)
{
object[] returnVal = new object[paramCount];
for (int i = 0; i < paramCount; i++)
{
FieldType fieldType = (FieldType)reader.ReadBits(5);
switch (fieldType)
{
case FieldType.Bool:
returnVal[i] = reader.ReadBool();
break;
case FieldType.Byte:
returnVal[i] = reader.ReadByte();
break;
case FieldType.Double:
returnVal[i] = reader.ReadDouble();
break;
case FieldType.Single:
returnVal[i] = reader.ReadFloat();
break;
case FieldType.Int:
returnVal[i] = reader.ReadInt();
break;
case FieldType.Long:
returnVal[i] = reader.ReadLong();
break;
case FieldType.SByte:
returnVal[i] = reader.ReadSByte();
break;
case FieldType.Short:
returnVal[i] = reader.ReadShort();
break;
case FieldType.UInt:
returnVal[i] = reader.ReadUInt();
break;
case FieldType.ULong:
returnVal[i] = reader.ReadULong();
break;
case FieldType.UShort:
returnVal[i] = reader.ReadUShort();
break;
case FieldType.String:
returnVal[i] = reader.ReadString();
break;
case FieldType.Vector3:
Vector3 vector3 = Vector3.zero;
vector3.x = reader.ReadFloat();
vector3.y = reader.ReadFloat();
vector3.z = reader.ReadFloat();
returnVal[i] = vector3;
break;
case FieldType.Vector2:
Vector2 vector2 = Vector2.zero;
vector2.x = reader.ReadFloat();
vector2.y = reader.ReadFloat();
returnVal[i] = vector2;
break;
case FieldType.Quaternion:
Vector3 eulerAngle = Vector3.zero;
eulerAngle.x = reader.ReadFloat();
eulerAngle.y = reader.ReadFloat();
eulerAngle.z = reader.ReadFloat();
returnVal[i] = Quaternion.Euler(eulerAngle);
break;
case FieldType.BoolArray:
ushort boolCount = reader.ReadUShort();
bool[] bools = new bool[boolCount];
for (int j = 0; j < boolCount; j++)
bools[j] = reader.ReadBool();
returnVal[i] = bools;
break;
case FieldType.ByteArray:
returnVal[i] = reader.ReadByteArray();
break;
case FieldType.DoubleArray:
returnVal[i] = reader.ReadDoubleArray();
break;
case FieldType.SingleArray:
returnVal[i] = reader.ReadFloatArray();
break;
case FieldType.IntArray:
returnVal[i] = reader.ReadIntArray();
break;
case FieldType.LongArray:
returnVal[i] = reader.ReadLongArray();
break;
case FieldType.SByteArray:
returnVal[i] = reader.ReadSByteArray();
break;
case FieldType.ShortArray:
returnVal[i] = reader.ReadShortArray();
break;
case FieldType.UIntArray:
returnVal[i] = reader.ReadUIntArray();
break;
case FieldType.ULongArray:
returnVal[i] = reader.ReadULongArray();
break;
case FieldType.UShortArray:
returnVal[i] = reader.ReadUShortArray();
break;
case FieldType.StringArray:
ushort stringCount = reader.ReadUShort();
string[] strings = new string[stringCount];
for (int j = 0; j < stringCount; j++)
strings[j] = reader.ReadString();
returnVal[i] = strings;
break;
case FieldType.Vector3Array:
ushort vector3Count = reader.ReadUShort();
Vector3[] vector3s = new Vector3[vector3Count];
for (int j = 0; j < vector3Count; j++)
{
Vector3 vec3 = Vector3.zero;
vec3.x = reader.ReadFloat();
vec3.y = reader.ReadFloat();
vec3.z = reader.ReadFloat();
vector3s[j] = vec3;
}
returnVal[i] = vector3s;
break;
case FieldType.Vector2Array:
ushort vector2Count = reader.ReadUShort();
Vector2[] vector2s = new Vector2[vector2Count];
for (int j = 0; j < vector2Count; j++)
{
Vector2 vec2 = Vector2.zero;
vec2.x = reader.ReadFloat();
vec2.y = reader.ReadFloat();
vector2s[j] = vec2;
}
returnVal[i] = vector2s;
break;
case FieldType.QuaternionArray:
ushort quaternionCount = reader.ReadUShort();
Quaternion[] quaternions = new Quaternion[quaternionCount];
for (int j = 0; j < quaternionCount; j++)
{
Vector3 vec3 = Vector3.zero;
vec3.x = reader.ReadFloat();
vec3.y = reader.ReadFloat();
vec3.z = reader.ReadFloat();
quaternions[j] = Quaternion.Euler(vec3);
}
returnVal[i] = quaternions;
break;
}
}
return returnVal;
}
}
}

65
MLAPI/Data/FixedQueue.cs Normal file
View File

@ -0,0 +1,65 @@
using System;
namespace MLAPI.Data
{
/// <summary>
/// Queue with a fixed size
/// </summary>
/// <typeparam name="T">The type of the queue</typeparam>
public sealed class FixedQueue<T>
{
private readonly T[] queue;
private int queueCount = 0;
private int queueStart;
/// <summary>
/// The amount of enqueued objects
/// </summary>
public int Count { get => queueCount; }
/// <summary>
/// Creates a new FixedQueue with a given size
/// </summary>
/// <param name="maxSize">The size of the queue</param>
public FixedQueue(int maxSize)
{
queue = new T[maxSize];
queueStart = 0;
}
/// <summary>
/// Enqueues an object
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public bool Enqueue(T t)
{
queue[(queueStart + queueCount) % queue.Length] = t;
if (++queueCount > queue.Length)
{
--queueCount;
return true;
}
return false;
}
/// <summary>
/// Dequeues an object
/// </summary>
/// <returns></returns>
public T Dequeue()
{
if (--queueCount == -1) throw new IndexOutOfRangeException("Cannot dequeue empty queue!");
T res = queue[queueStart];
queueStart = (queueStart + 1) % queue.Length;
return res;
}
/// <summary>
/// Gets the element at a given virtual index
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public T ElementAt(int index) => queue[(queueStart + index) % queue.Length];
}
}

View File

@ -1,12 +1,10 @@
using MLAPI.MonoBehaviours.Core;
using MLAPI.NetworkingManagerComponents.Binary;
using MLAPI.NetworkingManagerComponents.Cryptography;
using MLAPI.Data.Transports.UNET;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
namespace MLAPI.Data
{
@ -23,15 +21,7 @@ namespace MLAPI.Data
/// <summary>
/// The transport hosts the sever uses
/// </summary>
public List<TransportHost> ServerTransports = new List<TransportHost>()
{
new TransportHost()
{
Name = "UDP Socket",
Port = 7777,
Websockets = false
}
};
public IUDPTransport NetworkTransport = new UnetTransport();
/// <summary>
/// Channels used by the NetworkedTransport
/// </summary>
@ -50,13 +40,16 @@ namespace MLAPI.Data
/// <summary>
/// A list of spawnable prefabs
/// </summary>
[HideInInspector]
public List<NetworkedPrefab> NetworkedPrefabs = new List<NetworkedPrefab>();
internal Dictionary<string, int> NetworkPrefabIds;
internal Dictionary<int, string> NetworkPrefabNames;
/// <summary>
/// The default player prefab
/// </summary>
public string PlayerPrefabName;
[SerializeField]
[HideInInspector]
internal string PlayerPrefabName;
/// <summary>
/// The size of the receive message buffer. This is the max message size.
/// </summary>
@ -100,11 +93,12 @@ namespace MLAPI.Data
/// <summary>
/// The data to send during connection which can be used to decide on if a client should get accepted
/// </summary>
[HideInInspector]
public byte[] ConnectionData = new byte[0];
/// <summary>
/// The amount of seconds to keep a lag compensation position history
/// </summary>
public float SecondsHistory = 5;
public int SecondsHistory = 5;
/// <summary>
/// Wheter or not to make the library handle object spawning
/// </summary>
@ -151,54 +145,52 @@ namespace MLAPI.Data
if (ConfigHash != null && cache)
return ConfigHash;
using (MemoryStream writeStream = new MemoryStream())
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(writeStream))
writer.WriteUShort(ProtocolVersion);
for (int i = 0; i < Channels.Count; i++)
{
writer.Write(ProtocolVersion);
for (int i = 0; i < Channels.Count; i++)
{
writer.Write(Channels[i].Name);
writer.Write((byte)Channels[i].Type);
if (EnableEncryption)
writer.Write(Channels[i].Encrypted);
}
for (int i = 0; i < MessageTypes.Count; i++)
{
writer.Write(MessageTypes[i].Name);
if (AllowPassthroughMessages)
writer.Write(MessageTypes[i].Passthrough);
}
if (EnableSceneSwitching)
{
for (int i = 0; i < RegisteredScenes.Count; i++)
{
writer.Write(RegisteredScenes[i]);
}
}
if(HandleObjectSpawning)
{
for (int i = 0; i < NetworkedPrefabs.Count; i++)
{
writer.Write(NetworkedPrefabs[i].name);
}
}
writer.Write(HandleObjectSpawning);
writer.Write(EnableEncryption);
writer.Write(AllowPassthroughMessages);
writer.Write(EnableSceneSwitching);
writer.Write(SignKeyExchange);
writer.WriteString(Channels[i].Name);
writer.WriteByte((byte)Channels[i].Type);
if (EnableEncryption)
writer.WriteBool(Channels[i].Encrypted);
}
using (SHA256Managed sha256 = new SHA256Managed())
for (int i = 0; i < MessageTypes.Count; i++)
{
//Returns a 256 bit / 32 byte long checksum of the config
writer.WriteString(MessageTypes[i].Name);
if (AllowPassthroughMessages)
writer.WriteBool(MessageTypes[i].Passthrough);
}
if (EnableSceneSwitching)
{
for (int i = 0; i < RegisteredScenes.Count; i++)
{
writer.WriteString(RegisteredScenes[i]);
}
}
if (HandleObjectSpawning)
{
for (int i = 0; i < NetworkedPrefabs.Count; i++)
{
writer.WriteString(NetworkedPrefabs[i].name);
}
}
writer.WriteBool(HandleObjectSpawning);
writer.WriteBool(EnableEncryption);
writer.WriteBool(AllowPassthroughMessages);
writer.WriteBool(EnableSceneSwitching);
writer.WriteBool(SignKeyExchange);
//using (SHA256Managed sha256 = new SHA256Managed())
//{
// Returns a 160 bit / 20 byte / 5 int checksum of the config
if (cache)
{
ConfigHash = sha256.ComputeHash(writeStream.ToArray());
ConfigHash = MessageDigest.SHA1_Opt(writer.Finalize()).ToArray(); //sha256.ComputeHash(writer.Finalize());
return ConfigHash;
}
return sha256.ComputeHash(writeStream.ToArray());
}
return MessageDigest.SHA1_Opt(writer.Finalize()).ToArray(); //sha256.ComputeHash(writer.Finalize());
//}
}
}

View File

@ -1,4 +1,5 @@
using System;
using MLAPI.MonoBehaviours.Core;
using System;
using UnityEngine;
namespace MLAPI.Data
@ -9,13 +10,20 @@ namespace MLAPI.Data
[Serializable]
public class NetworkedPrefab
{
/// <summary>
/// The name of the networked prefab
/// </summary>
public string name;
internal string name
{
get
{
return prefab.GetComponent<NetworkedObject>().NetworkedPrefabName;
}
}
/// <summary>
/// The gameobject of the prefab
/// </summary>
public GameObject prefab;
/// <summary>
/// Wheter or not this is a playerPrefab
/// </summary>
public bool playerPrefab;
}
}

View File

@ -0,0 +1,15 @@
using System.Collections.Generic;
using System.Reflection;
namespace MLAPI.Data
{
internal class SyncedVarField
{
internal FieldInfo FieldInfo;
internal FieldType FieldType;
internal object FieldValue;
internal MethodInfo HookMethod;
internal bool Dirty;
internal bool Target;
}
}

View File

@ -0,0 +1,17 @@
namespace MLAPI.Data
{
public enum ChannelType
{
Unreliable,
UnreliableFragmented,
UnreliableSequenced,
Reliable,
ReliableFragmented,
ReliableSequenced,
StateUpdate,
ReliableStateUpdate,
AllCostDelivery,
UnreliableFragmentedSequenced,
ReliableFragmentedSequenced
}
}

View File

@ -0,0 +1,23 @@
namespace MLAPI.Data
{
public interface IUDPTransport
{
ChannelType InternalChannel { get; }
uint ServerNetId { get; }
uint HostDummyId { get; }
uint InvalidDummyId { get; }
void QueueMessageForSending(uint clientId, ref byte[] dataBuffer, int dataSize, int channelId, bool skipQueue, out byte error);
void SendQueue(uint clientId, out byte error);
NetEventType PollReceive(out uint clientId, out int channelId, ref byte[] data, int bufferSize, out int receivedSize, out byte error);
int AddChannel(ChannelType type, object settings);
void Connect(string address, int port, object settings, out byte error);
void RegisterServerListenSocket(object settings);
void DisconnectClient(uint clientId);
void DisconnectFromServer();
int GetCurrentRTT(uint clientId, out byte error);
int GetRemoteDelayTimeMS(uint clientId, int remoteTimestamp, out byte error);
int GetNetworkTimestamp();
object GetSettings();
void Shutdown();
}
}

View File

@ -0,0 +1,10 @@
namespace MLAPI.Data
{
public enum NetEventType
{
Data,
Connect,
Disconnect,
Nothing
}
}

View File

@ -1,7 +1,4 @@
using MLAPI.MonoBehaviours.Core;
using System;
namespace MLAPI.Data
namespace MLAPI.Data.Transports.UNET
{
/// <summary>
/// Represents a ClientId structure
@ -38,17 +35,6 @@ namespace MLAPI.Data
return Meta == 2;
}
/// <summary>
/// Static ServerNetId for comparison
/// </summary>
/// <value>The server net identifier.</value>
public static NetId ServerNetId
{
get
{
return new NetId((byte)NetworkingManager.singleton.serverHostId, (ushort)NetworkingManager.singleton.serverConnectionId, false, false);
}
}
/// <summary>
/// Initializes a new instance of the netId struct from transport values
/// </summary>
/// <param name="hostId">Host identifier.</param>
@ -66,20 +52,15 @@ namespace MLAPI.Data
else
Meta = 0;
}
private static byte[] tempUIntBytes = new byte[4];
private static byte[] tempUShortBytes = new byte[2];
/// <summary>
/// Initializes a new instance of the netId struct from a clientId
/// </summary>
/// <param name="clientId">Client identifier.</param>
public NetId(uint clientId)
{
tempUIntBytes = BitConverter.GetBytes(clientId);
HostId = tempUIntBytes[0];
ConnectionId = BitConverter.ToUInt16(tempUIntBytes, 1);
Meta = tempUIntBytes[3];
HostId = (byte)(clientId & 0xFF);
ConnectionId = (ushort)((byte)((clientId >> 8) & 0xFF) | (ushort)(((clientId >> 16) & 0xFF) << 8));
Meta = (byte)((clientId >> 24) & 0xFF);
}
/// <summary>
/// Gets the clientId.
@ -87,12 +68,7 @@ namespace MLAPI.Data
/// <returns>The client identifier.</returns>
public uint GetClientId()
{
tempUShortBytes = BitConverter.GetBytes(ConnectionId);
tempUIntBytes[0] = HostId;
tempUIntBytes[1] = tempUShortBytes[0];
tempUIntBytes[2] = tempUShortBytes[1];
tempUIntBytes[3] = Meta;
return BitConverter.ToUInt32(tempUIntBytes, 0);
return HostId | (uint)((ConnectionId & 0xFF) << 8) | (uint)(((ConnectionId >> 8) & 0xFF) << 16) | (uint)(Meta << 24);
}
// Rider generated vvv
/// <summary>

View File

@ -1,6 +1,6 @@
using System;
namespace MLAPI.Data
namespace MLAPI.Data.Transports.UNET
{
/// <summary>
/// Represents a Transport host

View File

@ -0,0 +1,183 @@
using MLAPI.MonoBehaviours.Core;
using System;
using System.Collections.Generic;
using UnityEngine.Networking;
namespace MLAPI.Data.Transports.UNET
{
[Serializable]
public class UnetTransport : IUDPTransport
{
public ChannelType InternalChannel { get => ChannelType.ReliableFragmentedSequenced; }
public uint HostDummyId { get => new NetId(0,0,true,false).GetClientId(); }
public uint InvalidDummyId { get => new NetId(0, 0, false, true).GetClientId(); }
public uint ServerNetId { get => new NetId((byte)serverHostId, (ushort)serverConnectionId, false, false).GetClientId(); }
public int serverConnectionId;
public int serverHostId;
public List<TransportHost> ServerTransports = new List<TransportHost>()
{
new TransportHost()
{
Name = "UDP Socket",
Port = 7777,
Websockets = false
}
};
public int Connect(string address, int port, object settings, bool websocket, out byte error)
{
NetworkTransport.Init();
int hostId = NetworkTransport.AddHost((HostTopology)settings);
return NetworkTransport.Connect(hostId, address, port, 0, out error);
}
public void DisconnectClient(uint clientId)
{
NetId netId = new NetId(clientId);
if (netId.IsHost() || netId.IsInvalid())
return;
byte error;
NetworkTransport.Disconnect(netId.HostId, netId.ConnectionId, out error);
}
public void DisconnectFromServer()
{
byte error;
NetworkTransport.Disconnect(serverHostId, serverConnectionId, out error);
}
public int GetCurrentRTT(uint clientId, out byte error)
{
NetId netId = new NetId(clientId);
return NetworkTransport.GetCurrentRTT(netId.HostId, netId.ConnectionId, out error);
}
public int GetNetworkTimestamp()
{
return NetworkTransport.GetNetworkTimestamp();
}
public int GetRemoteDelayTimeMS(uint clientId, int remoteTimestamp, out byte error)
{
NetId netId = new NetId(clientId);
return NetworkTransport.GetRemoteDelayTimeMS(netId.HostId, netId.ConnectionId, remoteTimestamp, out error);
}
public NetEventType PollReceive(out uint clientId, out int channelId, ref byte[] data, int bufferSize, out int receivedSize, out byte error)
{
int hostId;
int connectionId;
byte err;
NetworkEventType eventType = NetworkTransport.Receive(out hostId, out connectionId, out channelId, data, bufferSize, out receivedSize, out err);
clientId = new NetId((byte)hostId, (ushort)connectionId, false, false).GetClientId();
NetworkError errorType = (NetworkError)err;
if (errorType == NetworkError.Timeout)
eventType = NetworkEventType.DisconnectEvent; //In UNET. Timeouts are not disconnects. We have to translate that here.
error = 0;
//Translate NetworkEventType to NetEventType
switch (eventType)
{
case NetworkEventType.DataEvent:
return NetEventType.Data;
case NetworkEventType.ConnectEvent:
return NetEventType.Connect;
case NetworkEventType.DisconnectEvent:
return NetEventType.Disconnect;
case NetworkEventType.Nothing:
return NetEventType.Nothing;
case NetworkEventType.BroadcastEvent:
return NetEventType.Nothing;
}
return NetEventType.Nothing;
}
public void QueueMessageForSending(uint clientId, ref byte[] dataBuffer, int dataSize, int channelId, bool skipqueue, out byte error)
{
NetId netId = new NetId(clientId);
if (netId.IsHost() || netId.IsInvalid())
{
error = 0;
return;
}
if (skipqueue)
NetworkTransport.Send(netId.HostId, netId.ConnectionId, channelId, dataBuffer, dataSize, out error);
else
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channelId, dataBuffer, dataSize, out error);
}
public void Shutdown()
{
NetworkTransport.Shutdown();
}
public void SendQueue(uint clientId, out byte error)
{
NetId netId = new NetId(clientId);
NetworkTransport.SendQueuedMessages(netId.HostId, netId.ConnectionId, out error);
}
public void RegisterServerListenSocket(object settings)
{
HostTopology topology = new HostTopology((ConnectionConfig)settings, NetworkingManager.singleton.NetworkConfig.MaxConnections);
for (int i = 0; i < ServerTransports.Count; i++)
{
if (ServerTransports[i].Websockets)
NetworkTransport.AddWebsocketHost(topology, ServerTransports[i].Port);
else
NetworkTransport.AddHost(topology, ServerTransports[i].Port);
}
}
public int AddChannel(ChannelType type, object settings)
{
ConnectionConfig config = (ConnectionConfig)settings;
switch (type)
{
case ChannelType.Unreliable:
return config.AddChannel(QosType.Unreliable);
case ChannelType.UnreliableFragmented:
return config.AddChannel(QosType.UnreliableFragmented);
case ChannelType.UnreliableSequenced:
return config.AddChannel(QosType.UnreliableSequenced);
case ChannelType.Reliable:
return config.AddChannel(QosType.Reliable);
case ChannelType.ReliableFragmented:
return config.AddChannel(QosType.ReliableFragmented);
case ChannelType.ReliableSequenced:
return config.AddChannel(QosType.ReliableSequenced);
case ChannelType.StateUpdate:
return config.AddChannel(QosType.StateUpdate);
case ChannelType.ReliableStateUpdate:
return config.AddChannel(QosType.ReliableStateUpdate);
case ChannelType.AllCostDelivery:
return config.AddChannel(QosType.AllCostDelivery);
case ChannelType.UnreliableFragmentedSequenced:
return config.AddChannel(QosType.UnreliableFragmentedSequenced);
case ChannelType.ReliableFragmentedSequenced:
return config.AddChannel(QosType.ReliableFragmentedSequenced);
}
return 0;
}
public object GetSettings()
{
NetworkTransport.Init();
return new ConnectionConfig()
{
SendDelay = 0
};
}
public void Connect(string address, int port, object settings, out byte error)
{
serverHostId = NetworkTransport.AddHost(new HostTopology((ConnectionConfig)settings, 1));
serverConnectionId = NetworkTransport.Connect(serverHostId, address, port, 0, out error);
}
}
}

View File

@ -18,3 +18,12 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.MonoBehaviours.Core.NetworkingManager.Send(System.String,System.String,System.Byte[],System.UInt32,System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.MonoBehaviours.Core.NetworkingManager.Send(System.String,System.String,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.MonoBehaviours.Core.NetworkingManager.Send(System.UInt32[],System.String,System.String,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.MonoBehaviours.Core.NetworkingManager.HandleApproval(System.UInt32,System.Boolean,UnityEngine.Vector3,UnityEngine.Quaternion)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.HandleConnectionApproved(System.UInt32,System.Byte[],System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.HandleTimeSync(System.UInt32,System.Byte[],System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.PassthroughSend(System.UInt32,System.UInt32,System.UInt16,System.Int32,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.Send(System.Collections.Generic.List{System.UInt32},System.String,System.String,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.Send(System.String,System.String,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.Send(System.String,System.String,System.Byte[],System.UInt32,System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0018:Inline variable declaration", Justification = "Not supported in Unity Mono version", Scope = "member", Target = "~M:MLAPI.NetworkingManagerComponents.Core.InternalMessageHandler.Send(System.UInt32[],System.String,System.String,System.Byte[],System.Nullable{System.UInt32},System.Nullable{System.UInt16})")]

View File

@ -36,7 +36,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Development|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\MLAPI-Examples\Assets\MLAPI\</OutputPath>
<OutputPath>..\..\MLAPI-Examples\Assets\MLAPI\Lib\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
@ -67,21 +67,33 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Attributes\BinaryIgnore.cs" />
<Compile Include="Attributes\ClientRpc.cs" />
<Compile Include="Attributes\Command.cs" />
<Compile Include="Attributes\TargetRpc.cs" />
<Compile Include="Data\Cache.cs" />
<Compile Include="Data\Channel.cs" />
<Compile Include="Data\Transports\ChannelType.cs" />
<Compile Include="Data\FieldType.cs" />
<Compile Include="Attributes\SyncedVar.cs" />
<Compile Include="Data\FixedQueue.cs" />
<Compile Include="Data\Transports\IUDPTransport.cs" />
<Compile Include="Data\Transports\NetEventType.cs" />
<Compile Include="Data\NetworkConfig.cs" />
<Compile Include="Data\NetworkedPrefab.cs" />
<Compile Include="Data\NetworkPool.cs" />
<Compile Include="Data\SyncedVarField.cs" />
<Compile Include="Data\TrackedPointData.cs" />
<Compile Include="Data\TransportHost.cs" />
<Compile Include="Data\Transports\UNET\TransportHost.cs" />
<Compile Include="Data\Transports\UNET\UnetTransport.cs" />
<Compile Include="GlobalSuppressions.cs" />
<Compile Include="MonoBehaviours\Prototyping\NetworkedAnimator.cs" />
<Compile Include="MonoBehaviours\Prototyping\NetworkedNavMeshAgent.cs" />
<Compile Include="MonoBehaviours\Prototyping\NetworkedProximity.cs" />
<Compile Include="NetworkingManagerComponents\Binary\BitWriter.cs" />
<Compile Include="NetworkingManagerComponents\Binary\BitReader.cs" />
<Compile Include="NetworkingManagerComponents\Binary\BinaryHelpers.cs" />
<Compile Include="NetworkingManagerComponents\Binary\BinarySerializer.cs" />
<Compile Include="NetworkingManagerComponents\Binary\PrimitiveHasher.cs" />
<Compile Include="NetworkingManagerComponents\Cryptography\CryptographyHelper.cs" />
<Compile Include="NetworkingManagerComponents\Cryptography\DiffieHellman.cs" />
<Compile Include="NetworkingManagerComponents\Cryptography\EllipticCurve.cs" />
@ -96,10 +108,14 @@
<Compile Include="NetworkingManagerComponents\Core\NetworkPoolManager.cs" />
<Compile Include="NetworkingManagerComponents\Core\NetworkSceneManager.cs" />
<Compile Include="NetworkingManagerComponents\Core\SpawnManager.cs" />
<Compile Include="NetworkingManagerComponents\Cryptography\MessageDigest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Data\NetId.cs" />
<Compile Include="Data\Transports\UNET\NetId.cs" />
<Compile Include="NetworkingManagerComponents\Binary\MessageChunker.cs" />
<Compile Include="Data\MessageType.cs" />
<Compile Include="NetworkingManagerComponents\Core\InternalMessageHandler.Send.cs" />
<Compile Include="NetworkingManagerComponents\Core\InternalMessageHandler.Receive.cs" />
<Compile Include="NetworkingManagerComponents\Core\InternalMessageHandler.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
using MLAPI.Data;
using MLAPI.NetworkingManagerComponents.Binary;
using MLAPI.NetworkingManagerComponents.Core;
using System;
using System.Collections.Generic;
@ -42,7 +43,25 @@ namespace MLAPI.MonoBehaviours.Core
return ownerClientId;
}
}
internal uint ownerClientId = new NetId(0, 0, false, true).GetClientId();
private uint? _ownerClientId = null;
//internal uint ownerClientId = new NetId(0, 0, false, true).GetClientId();
internal uint ownerClientId
{
get
{
if (_ownerClientId == null)
return NetworkingManager.singleton.NetworkConfig.NetworkTransport.InvalidDummyId;
else
return _ownerClientId.Value;
}
set
{
if (value == NetworkingManager.singleton.NetworkConfig.NetworkTransport.InvalidDummyId)
_ownerClientId = null;
else
_ownerClientId = value;
}
}
/// <summary>
/// The name of the NetworkedPrefab
/// </summary>
@ -87,7 +106,7 @@ namespace MLAPI.MonoBehaviours.Core
{
get
{
return isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (new NetId(ownerClientId).IsHost() && NetworkingManager.singleton.isHost));
return isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (ownerClientId == NetworkingManager.singleton.NetworkConfig.NetworkTransport.HostDummyId && NetworkingManager.singleton.isHost));
}
}
/// <summary>
@ -97,7 +116,7 @@ namespace MLAPI.MonoBehaviours.Core
{
get
{
return !isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (new NetId(ownerClientId).IsHost() && NetworkingManager.singleton.isHost));
return !isPlayerObject && (OwnerClientId == NetworkingManager.singleton.MyClientId || (ownerClientId == NetworkingManager.singleton.NetworkConfig.NetworkTransport.HostDummyId && NetworkingManager.singleton.isHost));
}
}
@ -114,6 +133,73 @@ namespace MLAPI.MonoBehaviours.Core
internal bool _isSpawned = false;
internal bool? sceneObject = null;
public HashSet<uint> observers = new HashSet<uint>();
internal void RebuildObservers(uint? clientId = null)
{
bool initial = clientId != null;
if (initial)
{
bool shouldBeAdded = true;
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
{
bool state = childNetworkedBehaviours[i].OnCheckObserver(clientId.Value);
if (state == false)
{
shouldBeAdded = false;
break;
}
}
if (shouldBeAdded)
observers.Add(clientId.Value);
}
else
{
HashSet<uint> previousObservers = new HashSet<uint>(observers);
HashSet<uint> newObservers = new HashSet<uint>();
bool update = false;
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
{
bool changed = childNetworkedBehaviours[i].OnRebuildObservers(newObservers);
if (changed)
{
observers = newObservers;
update = true;
break;
}
}
if (update)
{
foreach (KeyValuePair<uint, NetworkedClient> pair in NetworkingManager.singleton.connectedClients)
{
if (pair.Key == NetworkingManager.singleton.NetworkConfig.NetworkTransport.HostDummyId)
continue;
if ((previousObservers.Contains(pair.Key) && !newObservers.Contains(pair.Key)) ||
(!previousObservers.Contains(pair.Key) && newObservers.Contains(pair.Key)))
{
//Something changed for this client.
using (BitWriter writer = new BitWriter())
{
writer.WriteUInt(networkId);
writer.WriteBool(observers.Contains(pair.Key));
InternalMessageHandler.Send(pair.Key, "MLAPI_SET_VISIBILITY", "MLAPI_INTERNAL", writer.Finalize(), null);
}
FlushToClient(pair.Key);
}
}
}
}
}
internal void SetLocalVisibility(bool visibility)
{
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
{
childNetworkedBehaviours[i].OnSetLocalVisibility(visibility);
}
}
private void OnDestroy()
{
if (NetworkingManager.singleton != null)

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@ namespace MLAPI.MonoBehaviours.Core
public class TrackedObject : MonoBehaviour
{
internal Dictionary<float, TrackedPointData> FrameData = new Dictionary<float, TrackedPointData>();
internal LinkedList<float> Framekeys = new LinkedList<float>();
internal FixedQueue<float> Framekeys;
private Vector3 savedPosition;
private Quaternion savedRotation;
@ -37,38 +37,52 @@ namespace MLAPI.MonoBehaviours.Core
{
get
{
if (Framekeys.First == null || Framekeys.Last == null)
if (Framekeys.Count < 2)
return 0;
float totalSpan = Framekeys.Last.Value - Framekeys.First.Value;
float totalSpan = Framekeys.ElementAt(Framekeys.Count - 1) - Framekeys.ElementAt(0);
return (totalSpan / Framekeys.Count) * 1000f;
}
}
/// <summary>
/// Gets the total time history we have for this object
/// </summary>
public float TotalTimeHistory
{
get
{
return Framekeys.ElementAt(Framekeys.Count - 1) - Framekeys.ElementAt(0);
}
}
private int maxPoints
{
get
{
return (int)(NetworkingManager.singleton.NetworkConfig.SecondsHistory / (1f / NetworkingManager.singleton.NetworkConfig.EventTickrate));
}
}
internal void ReverseTransform(float secondsAgo)
{
savedPosition = transform.position;
savedRotation = transform.rotation;
float currentTime = NetworkingManager.singleton.NetworkTime;
float targetTime = currentTime - secondsAgo;
float previousTime = 0;
float nextTime = 0;
LinkedListNode<float> node = Framekeys.First;
float previousValue = 0f;
while(node != null)
float previousTime = 0f;
float nextTime = 0f;
for (int i = 0; i < Framekeys.Count; i++)
{
if(previousValue <= targetTime && node.Value >= targetTime)
if (previousTime <= targetTime && Framekeys.ElementAt(i) >= targetTime)
{
previousTime = previousValue;
nextTime = node.Value;
nextTime = Framekeys.ElementAt(i);
break;
}
else
{
previousValue = node.Value;
node = node.Next;
}
previousTime = Framekeys.ElementAt(i);
}
float timeBetweenFrames = nextTime - previousTime;
float timeAwayFromPrevious = currentTime - previousTime;
float lerpProgress = timeAwayFromPrevious / timeBetweenFrames;
@ -84,35 +98,27 @@ namespace MLAPI.MonoBehaviours.Core
void Start()
{
Framekeys.AddFirst(0);
Framekeys = new FixedQueue<float>(maxPoints);
Framekeys.Enqueue(0);
LagCompensationManager.simulationObjects.Add(this);
}
void OnDestroy()
{
Framekeys.Clear();
FrameData.Clear();
LagCompensationManager.simulationObjects.Remove(this);
}
internal void AddFrame()
{
float currentTime = NetworkingManager.singleton.NetworkTime;
LinkedListNode<float> node = Framekeys.First;
LinkedListNode<float> nextNode = node.Next;
while (node != null && currentTime - node.Value >= NetworkingManager.singleton.NetworkConfig.SecondsHistory)
{
nextNode = node.Next;
FrameData.Remove(node.Value);
Framekeys.RemoveFirst();
node = nextNode;
}
if (Framekeys.Count == maxPoints)
FrameData.Remove(Framekeys.Dequeue());
FrameData.Add(NetworkingManager.singleton.NetworkTime, new TrackedPointData()
{
position = transform.position,
rotation = transform.rotation
});
Framekeys.AddLast(NetworkingManager.singleton.NetworkTime);
Framekeys.Enqueue(NetworkingManager.singleton.NetworkTime);
}
}
}

View File

@ -0,0 +1,88 @@
using MLAPI.MonoBehaviours.Core;
using System.Collections.Generic;
using UnityEngine;
namespace MLAPI.MonoBehaviours.Prototyping
{
//This class based on the code from the UNET HLAPI Proximity
public class NetworkedProximity : NetworkedBehaviour
{
public enum CheckMethod
{
Physics3D,
Physics2D
};
[Tooltip("The maximum range that objects will be visible at.")]
public int Range = 10;
[Tooltip("How often (in seconds) that this object should update the set of players that can see it.")]
public float VisibilityUpdateInterval = 1.0f; // in seconds
[Tooltip("Which method to use for checking proximity of players.\n\nPhysics3D uses 3D physics to determine proximity.\n\nPhysics2D uses 2D physics to determine proximity.")]
public CheckMethod CheckType = CheckMethod.Physics3D;
[Tooltip("Enable to force this object to be hidden from players.")]
public bool ForceHidden = false;
private float lastUpdateTime;
private void Update()
{
if (!isServer)
return;
if (Time.time - lastUpdateTime > VisibilityUpdateInterval)
{
RebuildObservers();
lastUpdateTime = NetworkingManager.singleton.NetworkTime;
}
}
public override bool OnCheckObserver(uint newClientId)
{
if (ForceHidden)
return false;
Vector3 pos = NetworkingManager.singleton.ConnectedClients[newClientId].PlayerObject.transform.position;
return (pos - transform.position).magnitude < Range;
}
public override bool OnRebuildObservers(HashSet<uint> observers)
{
if (ForceHidden)
{
// ensure player can still see themself
if (networkedObject != null && networkedObject.isPlayerObject)
observers.Add(networkedObject.OwnerClientId);
return true;
}
switch (CheckType)
{
case CheckMethod.Physics3D:
{
var hits = Physics.OverlapSphere(transform.position, Range);
for (int i = 0; i < hits.Length; i++)
{
var uv = hits[i].GetComponent<NetworkedObject>();
if (uv != null && uv.isPlayerObject)
observers.Add(uv.OwnerClientId);
}
return true;
}
case CheckMethod.Physics2D:
{
var hits = Physics2D.OverlapCircleAll(transform.position, Range);
for (int i = 0; i < hits.Length; i++)
{
var uv = hits[i].GetComponent<NetworkedObject>();
if (uv != null && (uv.isPlayerObject))
observers.Add(uv.OwnerClientId);
}
return true;
}
}
return false;
}
}
}

View File

@ -94,11 +94,20 @@ namespace MLAPI.MonoBehaviours.Prototyping
{
timeForLerp = 1f / SendsPerSecond;
}
lastSentRot = transform.rotation;
lastSentPos = transform.position;
lerpStartPos = transform.position;
lerpStartRot = transform.rotation;
lerpEndPos = transform.position;
lerpEndRot = transform.rotation;
}
private void Update()
{
if(isOwner || isLocalPlayer || (new NetId(ownerClientId).IsInvalid() && isServer))
if(isOwner || isLocalPlayer || (ownerClientId == NetworkingManager.singleton.NetworkConfig.NetworkTransport.InvalidDummyId && isServer))
{
//We own the object OR we are server and the object is not owned by anyone OR we are the object.
if(NetworkingManager.singleton.NetworkTime - lastSendTime >= timeForLerp && (Vector3.Distance(transform.position, lastSentPos) > MinMeters || Quaternion.Angle(transform.rotation, lastSentRot) > MinDegrees))
@ -113,12 +122,13 @@ namespace MLAPI.MonoBehaviours.Prototyping
writer.Write(transform.position.x);
writer.Write(transform.position.y);
writer.Write(transform.position.z);
writer.Write(transform.rotation.eulerAngles.x);
writer.Write(transform.rotation.eulerAngles.y);
writer.Write(transform.rotation.eulerAngles.z);
}
if (isServer)
SendToClientsTarget("MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer);
SendToClientsTarget("MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer, true);
else
SendToServerTarget("MLAPI_OnRecieveTransformFromClient", "MLAPI_POSITION_UPDATE", positionUpdateBuffer);
}
@ -135,7 +145,7 @@ namespace MLAPI.MonoBehaviours.Prototyping
//Snap, set T to 1 (100% of the lerp)
lerpT = 1f;
}
lerpT += Time.deltaTime / timeForLerp;
lerpT += Time.unscaledDeltaTime / timeForLerp;
transform.position = Vector3.Lerp(lerpStartPos, lerpEndPos, lerpT);
transform.rotation = Quaternion.Slerp(lerpStartRot, lerpEndRot, lerpT);
}
@ -151,9 +161,11 @@ namespace MLAPI.MonoBehaviours.Prototyping
float xPos = reader.ReadSingle();
float yPos = reader.ReadSingle();
float zPos = reader.ReadSingle();
float xRot = reader.ReadSingle();
float yRot = reader.ReadSingle();
float zRot = reader.ReadSingle();
lerpStartPos = transform.position;
lerpStartRot = transform.rotation;
lerpEndPos = new Vector3(xPos, yPos, zPos);
@ -172,9 +184,11 @@ namespace MLAPI.MonoBehaviours.Prototyping
float xPos = reader.ReadSingle();
float yPos = reader.ReadSingle();
float zPos = reader.ReadSingle();
float xRot = reader.ReadSingle();
float yRot = reader.ReadSingle();
float zRot = reader.ReadSingle();
if (InterpolateServer)
{
lerpStartPos = transform.position;
@ -206,13 +220,13 @@ namespace MLAPI.MonoBehaviours.Prototyping
{
if (Vector3.Distance(NetworkingManager.singleton.connectedClients[i].PlayerObject.transform.position, transform.position) <= ProximityRange)
{
SendToClientTarget(NetworkingManager.singleton.connectedClients[i].ClientId, "MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer);
SendToClientTarget(NetworkingManager.singleton.connectedClients[i].ClientId, "MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer, true);
}
}
}
else
{
SendToNonLocalClientsTarget("MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer);
SendToNonLocalClientsTarget("MLAPI_OnRecieveTransformFromServer", "MLAPI_POSITION_UPDATE", positionUpdateBuffer, true);
}
}
}

View File

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
namespace MLAPI.NetworkingManagerComponents.Binary
{
public static class BinaryHelpers
@ -20,3 +16,4 @@ namespace MLAPI.NetworkingManagerComponents.Binary
((value << 8) & (0xFFUL << 32)) ;
}
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

View File

@ -1,9 +1,8 @@
using MLAPI.Attributes;
using MLAPI.Data;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using UnityEngine;
namespace MLAPI.NetworkingManagerComponents.Binary
@ -41,90 +40,19 @@ namespace MLAPI.NetworkingManagerComponents.Binary
cachedFields.Add(instance.GetType().FullName, sortedFields);
}
int outputSize = 0;
//Calculate output size
for (int i = 0; i < sortedFields.Length; i++)
using (BitWriter writer = new BitWriter())
{
if (sortedFields[i].FieldType == typeof(bool))
outputSize += 1;
else if (sortedFields[i].FieldType == typeof(byte))
outputSize += 1;
else if (sortedFields[i].FieldType == typeof(char))
outputSize += 2;
else if (sortedFields[i].FieldType == typeof(double))
outputSize += 8;
else if (sortedFields[i].FieldType == typeof(float))
outputSize += 4;
else if (sortedFields[i].FieldType == typeof(decimal))
outputSize += 16;
else if (sortedFields[i].FieldType == typeof(int))
outputSize += 4;
else if (sortedFields[i].FieldType == typeof(long))
outputSize += 8;
else if (sortedFields[i].FieldType == typeof(sbyte))
outputSize += 1;
else if (sortedFields[i].FieldType == typeof(short))
outputSize += 2;
else if (sortedFields[i].FieldType == typeof(uint))
outputSize += 4;
else if (sortedFields[i].FieldType == typeof(ulong))
outputSize += 8;
else if (sortedFields[i].FieldType == typeof(ushort))
outputSize += 2;
else if (sortedFields[i].FieldType == typeof(string))
outputSize += Encoding.UTF8.GetByteCount((string)sortedFields[i].GetValue(instance)) + 2;
else if (sortedFields[i].FieldType == typeof(byte[]))
outputSize += ((byte[])sortedFields[i].GetValue(instance)).Length + 2; //Two bytes to specify the size
else
Debug.LogWarning("MLAPI: The type \"" + sortedFields[i].FieldType.Name + "\" is not supported by the Binary Serializer. It will be ignored");
}
//Write data
using (MemoryStream stream = new MemoryStream(outputSize))
{
using (BinaryWriter writer = new BinaryWriter(stream))
for (int i = 0; i < sortedFields.Length; i++)
{
for (int i = 0; i < sortedFields.Length; i++)
FieldType fieldType = FieldTypeHelper.GetFieldType(sortedFields[i].FieldType);
if (fieldType == FieldType.Invalid)
{
if (sortedFields[i].FieldType == typeof(bool))
writer.Write((bool)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(byte))
writer.Write((byte)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(char))
writer.Write((char)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(double))
writer.Write((double)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(float))
writer.Write((float)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(decimal))
writer.Write((decimal)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(int))
writer.Write((int)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(long))
writer.Write((long)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(sbyte))
writer.Write((sbyte)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(short))
writer.Write((short)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(uint))
writer.Write((uint)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(ulong))
writer.Write((ulong)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(ushort))
writer.Write((ushort)sortedFields[i].GetValue(instance));
else if (sortedFields[i].FieldType == typeof(string))
{
writer.Write((ushort)Encoding.UTF8.GetByteCount((string)sortedFields[i].GetValue(instance))); //Size of string in bytes
writer.Write(Encoding.UTF8.GetBytes((string)sortedFields[i].GetValue(instance)));
}
else if (sortedFields[i].FieldType == typeof(byte[]))
{
writer.Write((ushort)((byte[])sortedFields[i].GetValue(instance)).Length); //Size of byte array
writer.Write((byte[])sortedFields[i].GetValue(instance));
}
Debug.LogWarning("MLAPI: The field " + sortedFields[i].Name + " will not be serialized as it's not of a supported type. Add the BinaryIgnore attribute to prevent this message from shwoing up.");
continue;
}
FieldTypeHelper.WriteFieldType(writer, sortedFields[i].GetValue(instance), fieldType);
}
return stream.ToArray();
return writer.Finalize();
}
}
@ -148,52 +76,16 @@ namespace MLAPI.NetworkingManagerComponents.Binary
cachedFields.Add(instance.GetType().FullName, sortedFields);
}
using (MemoryStream stream = new MemoryStream(binary))
BitReader reader = new BitReader(binary);
for (int i = 0; i < sortedFields.Length; i++)
{
using (BinaryReader reader = new BinaryReader(stream))
FieldType fieldType = FieldTypeHelper.GetFieldType(sortedFields[i].FieldType);
if (fieldType == FieldType.Invalid)
{
for (int i = 0; i < sortedFields.Length; i++)
{
if (sortedFields[i].FieldType == typeof(bool))
sortedFields[i].SetValue(instance, reader.ReadBoolean());
else if (sortedFields[i].FieldType == typeof(byte))
sortedFields[i].SetValue(instance, reader.ReadByte());
else if (sortedFields[i].FieldType == typeof(char))
sortedFields[i].SetValue(instance, reader.ReadChar());
else if (sortedFields[i].FieldType == typeof(double))
sortedFields[i].SetValue(instance, reader.ReadDouble());
else if (sortedFields[i].FieldType == typeof(float))
sortedFields[i].SetValue(instance, reader.ReadSingle());
else if (sortedFields[i].FieldType == typeof(decimal))
sortedFields[i].SetValue(instance, reader.ReadDecimal());
else if (sortedFields[i].FieldType == typeof(int))
sortedFields[i].SetValue(instance, reader.ReadInt32());
else if (sortedFields[i].FieldType == typeof(long))
sortedFields[i].SetValue(instance, reader.ReadInt64());
else if (sortedFields[i].FieldType == typeof(sbyte))
sortedFields[i].SetValue(instance, reader.ReadSByte());
else if (sortedFields[i].FieldType == typeof(short))
sortedFields[i].SetValue(instance, reader.ReadInt16());
else if (sortedFields[i].FieldType == typeof(uint))
sortedFields[i].SetValue(instance, reader.ReadUInt32());
else if (sortedFields[i].FieldType == typeof(ulong))
sortedFields[i].SetValue(instance, reader.ReadUInt64());
else if (sortedFields[i].FieldType == typeof(ushort))
sortedFields[i].SetValue(instance, reader.ReadUInt64());
else if (sortedFields[i].FieldType == typeof(string))
{
ushort size = reader.ReadUInt16();
sortedFields[i].SetValue(instance, Encoding.UTF8.GetString(reader.ReadBytes(size)));
}
else if (sortedFields[i].FieldType == typeof(byte[]))
{
ushort size = reader.ReadUInt16();
sortedFields[i].SetValue(instance, reader.ReadBytes(size));
}
else
Debug.LogWarning("MLAPI: The type \"" + sortedFields[i].FieldType.Name + "\" is not supported by the Binary Serializer. It will be ignored");
}
Debug.LogWarning("MLAPI: The field " + sortedFields[i].Name + " will not be deserialized as it's not of a supported type. Add the BinaryIgnore attribute to prevent this message from shwoing up.");
continue;
}
sortedFields[i].SetValue(instance, FieldTypeHelper.ReadFieldType(reader, fieldType));
}
return instance;
}

View File

@ -1,4 +1,5 @@
using System;
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
using System;
using System.Runtime.InteropServices;
using System.Text;
@ -53,8 +54,15 @@ namespace MLAPI.NetworkingManagerComponents.Binary
public int[] ReadIntArray(int known = -1) => ReadArray(ReadInt, known);
public long[] ReadLongArray(int known = -1) => ReadArray(ReadLong, known);
public string ReadString() => Encoding.UTF8.GetString(ReadByteArray());
public byte ReadBits(int bits)
{
byte b = 0;
for (int i = 0; --bits >= 0; ++i)
b |= (byte)((ReadBool() ? 1 : 0) << i);
return b;
}
private ulong ReadULong()
public ulong ReadULong()
{
ulong header = ReadByte();
if (header <= 240) return header;
@ -97,8 +105,6 @@ namespace MLAPI.NetworkingManagerComponents.Binary
lock(result_holder)
lock (type_holder)
{
//for (int i = 0; i < size; ++i)
// holder.SetValue(ReadByte(), i);
if (size == 4) result_holder.SetValue(BinaryHelpers.SwapEndian(ReadUInt()), 0);
else result_holder.SetValue(BinaryHelpers.SwapEndian(ReadULong()), 0);
Buffer.BlockCopy(result_holder, 0, type_holder, 0, size);
@ -109,3 +115,4 @@ namespace MLAPI.NetworkingManagerComponents.Binary
private static long ZigZagDecode(ulong d, int bytes) => (long)(((d << (bytes * 8 - 1)) & 1) | (d >> 1));
}
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

View File

@ -1,6 +1,6 @@
using System;
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
@ -10,6 +10,19 @@ namespace MLAPI.NetworkingManagerComponents.Binary
{
public sealed class BitWriter : IDisposable
{
private struct Partial
{
public byte value;
public byte count;
public static readonly FieldInfo value_info = typeof(Partial).GetField("value");
public static readonly FieldInfo count_info = typeof(Partial).GetField("count");
public Partial(byte value, byte count)
{
this.value = value;
this.count = count;
}
}
private static readonly Queue<List<object>> listPool = new Queue<List<object>>();
private static readonly float[] holder_f = new float[1];
@ -30,7 +43,8 @@ namespace MLAPI.NetworkingManagerComponents.Binary
typeof(ulong),
typeof(float),
typeof(double),
typeof(decimal)
typeof(decimal),
typeof(Partial)
};
private static readonly FieldInfo
@ -105,8 +119,9 @@ namespace MLAPI.NetworkingManagerComponents.Binary
public void WriteShortArray(short[] s, bool known = false) => PushArray(s, known);
public void WriteIntArray(int[] i, bool known = false) => PushArray(i, known);
public void WriteLongArray(long[] l, bool known = false) => PushArray(l, known);
public void WriteBits(byte value, int bits) => Push(new Partial(ReadNBits(value, 0, bits % 8), (byte)(bits%8))); // Suggestion: store (bits % 8) result?
public void PushArray<T>(T[] t, bool knownSize = false)
private void PushArray<T>(T[] t, bool knownSize = false)
{
if (!knownSize) Push((uint)t.Length);
bool signed = IsSigned(t.GetType().GetElementType());
@ -114,6 +129,35 @@ namespace MLAPI.NetworkingManagerComponents.Binary
foreach (T t1 in t) Push(signed ? (object)ZigZagEncode(t1 as long? ?? t1 as int? ?? t1 as short? ?? t1 as sbyte? ?? 0, size) : (object)t1);
}
/// <summary>
/// Serializes data, allocates an array and returns it
/// </summary>
/// <returns>Allocated array with written data</returns>
public byte[] Finalize()
{
long bitCount = 0;
for (int i = 0; i < collect.Count; ++i) bitCount += collect[i] == null ? (8 - (bitCount % 8)) % 8 : GetBitCount(collect[i]);
byte[] buffer = new byte[((bitCount / 8) + (bitCount % 8 == 0 ? 0 : 1))];
long bitOffset = 0;
bool isAligned = true;
foreach (var item in collect)
if (item == null)
{
bitOffset += (8 - (bitOffset % 8)) % 8;
isAligned = true;
}
else Serialize(item, buffer, ref bitOffset, ref isAligned);
return buffer;
}
//The ref is not needed. It's purley there to indicate that it's treated as a reference inside the method.
/// <summary>
/// Writes data to the given buffer
/// </summary>
/// <param name="buffer"></param>
/// <returns>The amount of bytes written</returns>
public long Finalize(ref byte[] buffer)
{
if(buffer == null)
@ -142,10 +186,14 @@ namespace MLAPI.NetworkingManagerComponents.Binary
return (bitCount / 8) + (bitCount % 8 == 0 ? 0 : 1);
}
/// <summary>
/// Gets the size in bytes if you were to serialize now
/// </summary>
/// <returns>The size in bytes</returns>
public long GetFinalizeSize()
{
long bitCount = 0;
for (int i = 0; i < collect.Count; ++i) bitCount += collect[i]==null ? (8 - (bitCount % 8)) % 8 : GetBitCount(collect[i]);
for (int i = 0; i < collect.Count; ++i) bitCount += collect[i] == null ? (8 - (bitCount % 8)) % 8 : GetBitCount(collect[i]);
return ((bitCount / 8) + (bitCount % 8 == 0 ? 0 : 1));
}
@ -160,6 +208,14 @@ namespace MLAPI.NetworkingManagerComponents.Binary
foreach (var element in array)
Serialize(element, writeTo, ref bitOffset, ref isAligned);
}
else if (type == typeof(Partial))
{
byte count;
WriteByte(writeTo, (byte)Partial.value_info.GetValue(t), bitOffset, isAligned, count = (byte)Partial.count_info.GetValue(t));
bitOffset += count;
isAligned = bitOffset % 8 == 0;
return;
}
else if (IsSupportedType(type))
{
long offset = t is bool ? 1 : BytesToRead(t) * 8;
@ -193,31 +249,22 @@ namespace MLAPI.NetworkingManagerComponents.Binary
// Since floating point flag bits are seemingly the highest bytes of the floating point values
// and even very small values have them, we swap the endianness in the hopes of reducing the size
if(size) Serialize(BinaryHelpers.SwapEndian((uint)result_holder.GetValue(0)), writeTo, ref bitOffset, ref isAligned);
if (size) Serialize(BinaryHelpers.SwapEndian((uint)result_holder.GetValue(0)), writeTo, ref bitOffset, ref isAligned);
else Serialize(BinaryHelpers.SwapEndian((ulong)result_holder.GetValue(0)), writeTo, ref bitOffset, ref isAligned);
}
}
else
{
//bool signed = IsSigned(t.GetType());
ulong value;
/*if (signed)
{
Type t1 = t.GetType();
if (t1 == typeof(sbyte)) value = (byte)ZigZagEncode(t as sbyte? ?? 0, 1);
else if (t1 == typeof(short)) value = (ushort)ZigZagEncode(t as short? ?? 0, 2);
else if (t1 == typeof(int)) value = (uint)ZigZagEncode(t as int? ?? 0, 4);
else /*if (t1 == typeof(long)) value = (ulong)ZigZagEncode(t as long? ?? 0, 8);
}
else*/
if (t is byte)
{
WriteByte(writeTo, t as byte? ?? 0, bitOffset, isAligned);
bitOffset += 8;
return;
}
else if (t is ushort) value = t as ushort? ?? 0;
else if (t is uint) value = t as uint? ?? 0;
else /*if (t is ulong)*/ value = t as ulong? ?? 0;
else value = t as ulong? ?? 0;
if (value <= 240) WriteByte(writeTo, (byte)value, bitOffset, isAligned);
else if (value <= 2287)
@ -244,7 +291,7 @@ namespace MLAPI.NetworkingManagerComponents.Binary
WriteByte(writeTo, (value >> 32) & 255, bitOffset + 40, isAligned);
if (value > 1099511627775)
{
WriteByte(writeTo, (value >> 40) & 55, bitOffset + 48, isAligned);
WriteByte(writeTo, (value >> 40) & 255, bitOffset + 48, isAligned);
if (value > 281474976710655)
{
WriteByte(writeTo, (value >> 48) & 255, bitOffset + 56, isAligned);
@ -297,6 +344,7 @@ namespace MLAPI.NetworkingManagerComponents.Binary
foreach (var element in t as Array)
count += GetBitCount(element);
}
else if (type == typeof(Partial)) return (byte)Partial.count_info.GetValue(t);
else if (IsSupportedType(type))
{
long ba = t is bool ? 1 : BytesToRead(t)*8;
@ -304,15 +352,13 @@ namespace MLAPI.NetworkingManagerComponents.Binary
else if (t is bool || t is decimal) count += ba;
else count += BytesToRead(t) * 8;
}
//else
// Debug.LogWarning("MLAPI: The type \"" + b.GetType() + "\" is not supported by the Binary Serializer. It will be ignored");
return count;
}
private static void WriteBit(byte[] b, bool bit, long index)
=> b[index / 8] = (byte)((b[index / 8] & ~(1 << (int)(index % 8))) | (bit ? 1 << (int)(index % 8) : 0));
private static void WriteByte(byte[] b, ulong value, long index, bool isAligned) => WriteByte(b, (byte)value, index, isAligned);
private static void WriteByte(byte[] b, byte value, long index, bool isAligned)
private static void WriteByte(byte[] b, byte value, long index, bool isAligned, byte bits = 8)
{
if (isAligned) b[index / 8] = value;
else
@ -322,7 +368,7 @@ namespace MLAPI.NetworkingManagerComponents.Binary
byte upper_mask = (byte)(0xFF << shift);
b[byteIndex] = (byte)((b[byteIndex] & (byte)~upper_mask) | (value << shift));
b[byteIndex + 1] = (byte)((b[byteIndex + 1] & upper_mask) | (value >> (8 - shift)));
if((8-shift)<bits) b[byteIndex + 1] = (byte)((b[byteIndex + 1] & upper_mask) | (value >> (8 - shift)));
}
}
private static void WriteDynamic(byte[] b, int value, int byteCount, long index, bool isAligned)
@ -383,3 +429,4 @@ namespace MLAPI.NetworkingManagerComponents.Binary
}
}
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

View File

@ -0,0 +1,59 @@
using MLAPI.NetworkingManagerComponents.Cryptography;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
namespace MLAPI.NetworkingManagerComponents.Binary
{
public static class PrimitiveHasher
{
private static Dictionary<string, ulong> ulongCachedHashes = new Dictionary<string, ulong>();
private static Dictionary<string, ushort> ushortCachedHashes = new Dictionary<string, ushort>();
private static Dictionary<string, uint> uintCachedHashes = new Dictionary<string, uint>();
public static ulong GetULongHash(string input, bool cache = false)
{
if (cache && ulongCachedHashes.ContainsKey(input))
return ulongCachedHashes[input];
//using (SHA256Managed sha = new SHA256Managed())
//{
//byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(input));
ulong value = MessageDigest.SHA1_Opt(Encoding.UTF8.GetBytes(input)).CastULong(); //hash[0] | ((ulong)hash[1] << 8) | ((ulong)hash[2] << 16) | ((ulong)hash[3] << 24) | ((ulong)hash[4] << 32) | ((ulong)hash[5] << 40) | ((ulong)hash[6] << 48) | ((ulong)hash[7] << 56);
if (cache)
ulongCachedHashes.Add(input, value);
return value;
//}
}
public static ulong GetUIntHash(string input, bool cache = false)
{
if (cache && uintCachedHashes.ContainsKey(input))
return uintCachedHashes[input];
//using (SHA256Managed sha = new SHA256Managed())
//{
//byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(input));
uint value = MessageDigest.SHA1_Opt(Encoding.UTF8.GetBytes(input)).CastUInt(); //hash[0] | ((uint)hash[1] << 8) | ((uint)hash[2] << 16) | ((uint)hash[3] << 24);
if (cache)
uintCachedHashes.Add(input, value);
return value;
//}
}
public static ushort GetUShortHash(string input, bool cache = false)
{
if (cache && ushortCachedHashes.ContainsKey(input))
return ushortCachedHashes[input];
//using (SHA256Managed sha = new SHA256Managed())
//{
//byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(input));
ushort value = MessageDigest.SHA1_Opt(Encoding.UTF8.GetBytes(input)).CastUShort(); //(ushort)(hash[0] | (ushort)(hash[1] << 8));
if (cache)
ushortCachedHashes.Add(input, value);
return value;
//}
}
}
}

View File

@ -0,0 +1,450 @@
using System.Reflection;
using System.Security.Cryptography;
using MLAPI.Data;
using MLAPI.MonoBehaviours.Core;
using MLAPI.NetworkingManagerComponents.Binary;
using UnityEngine;
namespace MLAPI.NetworkingManagerComponents.Core
{
internal static partial class InternalMessageHandler
{
internal static void HandleConnectionRequest(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
byte[] configHash = reader.ReadByteArray(32);
if (!netManager.NetworkConfig.CompareConfig(configHash))
{
Debug.LogWarning("MLAPI: NetworkConfiguration missmatch. The configuration between the server and client does not match.");
netManager.DisconnectClient(clientId);
return;
}
if (netManager.NetworkConfig.EnableEncryption)
{
byte[] diffiePublic = reader.ReadByteArray();
netManager.diffieHellmanPublicKeys.Add(clientId, diffiePublic);
}
if (netManager.NetworkConfig.ConnectionApproval)
{
byte[] connectionBuffer = reader.ReadByteArray();
netManager.ConnectionApprovalCallback(connectionBuffer, clientId, netManager.HandleApproval);
}
else
{
netManager.HandleApproval(clientId, true, Vector3.zero, Quaternion.identity);
}
}
internal static void HandleConnectionApproved(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
netManager.myClientId = reader.ReadUInt();
uint sceneIndex = 0;
if (netManager.NetworkConfig.EnableSceneSwitching)
sceneIndex = reader.ReadUInt();
if (netManager.NetworkConfig.EnableEncryption)
{
byte[] serverPublicKey = reader.ReadByteArray();
netManager.clientAesKey = netManager.clientDiffieHellman.GetSharedSecret(serverPublicKey);
if (netManager.NetworkConfig.SignKeyExchange)
{
byte[] publicKeySignature = reader.ReadByteArray();
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.PersistKeyInCsp = false;
rsa.FromXmlString(netManager.NetworkConfig.RSAPublicKey);
if (!rsa.VerifyData(serverPublicKey, new SHA512CryptoServiceProvider(), publicKeySignature))
{
//Man in the middle.
Debug.LogWarning("MLAPI: Signature doesnt match for the key exchange public part. Disconnecting");
netManager.StopClient();
return;
}
}
}
}
float netTime = reader.ReadFloat();
int remoteStamp = reader.ReadInt();
byte error;
int msDelay = NetworkingManager.singleton.NetworkConfig.NetworkTransport.GetRemoteDelayTimeMS(clientId, remoteStamp, out error);
netManager.networkTime = netTime + (msDelay / 1000f);
netManager.connectedClients.Add(netManager.MyClientId, new NetworkedClient() { ClientId = netManager.MyClientId });
int clientCount = reader.ReadInt();
for (int i = 0; i < clientCount; i++)
{
uint _clientId = reader.ReadUInt();
netManager.connectedClients.Add(_clientId, new NetworkedClient() { ClientId = _clientId });
}
if (netManager.NetworkConfig.HandleObjectSpawning)
{
SpawnManager.DestroySceneObjects();
int objectCount = reader.ReadInt();
for (int i = 0; i < objectCount; i++)
{
bool isPlayerObject = reader.ReadBool();
uint networkId = reader.ReadUInt();
uint ownerId = reader.ReadUInt();
int prefabId = reader.ReadInt();
bool isActive = reader.ReadBool();
bool sceneObject = reader.ReadBool();
bool visible = reader.ReadBool();
float xPos = reader.ReadFloat();
float yPos = reader.ReadFloat();
float zPos = reader.ReadFloat();
float xRot = reader.ReadFloat();
float yRot = reader.ReadFloat();
float zRot = reader.ReadFloat();
if (isPlayerObject)
{
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
}
else
{
GameObject go = SpawnManager.SpawnPrefabIndexClient(prefabId, networkId, ownerId,
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
go.GetComponent<NetworkedObject>().sceneObject = sceneObject;
go.SetActive(isActive);
}
}
}
if (netManager.NetworkConfig.EnableSceneSwitching)
{
NetworkSceneManager.OnSceneSwitch(sceneIndex);
}
netManager._isClientConnected = true;
if (netManager.OnClientConnectedCallback != null)
netManager.OnClientConnectedCallback.Invoke(netManager.MyClientId);
}
internal static void HandleAddObject(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
if (netManager.NetworkConfig.HandleObjectSpawning)
{
bool isPlayerObject = reader.ReadBool();
uint networkId = reader.ReadUInt();
uint ownerId = reader.ReadUInt();
int prefabId = reader.ReadInt();
bool sceneObject = reader.ReadBool();
bool visible = reader.ReadBool();
float xPos = reader.ReadFloat();
float yPos = reader.ReadFloat();
float zPos = reader.ReadFloat();
float xRot = reader.ReadFloat();
float yRot = reader.ReadFloat();
float zRot = reader.ReadFloat();
if (isPlayerObject)
{
netManager.connectedClients.Add(ownerId, new NetworkedClient() { ClientId = ownerId });
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
}
else
{
GameObject go = SpawnManager.SpawnPrefabIndexClient(prefabId, networkId, ownerId,
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
go.GetComponent<NetworkedObject>().sceneObject = sceneObject;
}
}
else
{
uint ownerId = reader.ReadUInt();
netManager.connectedClients.Add(ownerId, new NetworkedClient() { ClientId = ownerId });
}
}
internal static void HandleClientDisconnect(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint disconnectedClientId = reader.ReadUInt();
netManager.OnClientDisconnect(disconnectedClientId);
}
internal static void HandleDestroyObject(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint netId = reader.ReadUInt();
SpawnManager.OnDestroyObject(netId, true);
}
internal static void HandleSwitchScene(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
NetworkSceneManager.OnSceneSwitch(reader.ReadUInt());
}
internal static void HandleSpawnPoolObject(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint netId = reader.ReadUInt();
float xPos = reader.ReadFloat();
float yPos = reader.ReadFloat();
float zPos = reader.ReadFloat();
float xRot = reader.ReadFloat();
float yRot = reader.ReadFloat();
float zRot = reader.ReadFloat();
SpawnManager.spawnedObjects[netId].transform.position = new Vector3(xPos, yPos, zPos);
SpawnManager.spawnedObjects[netId].transform.rotation = Quaternion.Euler(xRot, yRot, zRot);
SpawnManager.spawnedObjects[netId].gameObject.SetActive(true);
}
internal static void HandleDestroyPoolObject(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint netId = reader.ReadUInt();
SpawnManager.spawnedObjects[netId].gameObject.SetActive(false);
}
internal static void HandleChangeOwner(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint netId = reader.ReadUInt();
uint ownerClientId = reader.ReadUInt();
if (SpawnManager.spawnedObjects[netId].OwnerClientId == netManager.MyClientId)
{
//We are current owner.
SpawnManager.spawnedObjects[netId].InvokeBehaviourOnLostOwnership();
}
if (ownerClientId == netManager.MyClientId)
{
//We are new owner.
SpawnManager.spawnedObjects[netId].InvokeBehaviourOnGainedOwnership();
}
SpawnManager.spawnedObjects[netId].ownerClientId = ownerClientId;
}
internal static void HandleSyncVarUpdate(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
byte dirtyCount = reader.ReadByte();
uint netId = reader.ReadUInt();
ushort orderIndex = reader.ReadUShort();
if (dirtyCount > 0)
{
for (int i = 0; i < dirtyCount; i++)
{
byte fieldIndex = reader.ReadByte();
if (!SpawnManager.spawnedObjects.ContainsKey(netId))
{
Debug.LogWarning("MLAPI: Sync message recieved for a non existant object with id: " + netId);
return;
}
else if (SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex) == null)
{
Debug.LogWarning("MLAPI: Sync message recieved for a non existant behaviour");
return;
}
else if (fieldIndex > (SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields.Count - 1))
{
Debug.LogWarning("MLAPI: Sync message recieved for field out of bounds");
return;
}
FieldType type = SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields[fieldIndex].FieldType;
switch (type)
{
case FieldType.Bool:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadBool(), fieldIndex);
break;
case FieldType.Byte:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadByte(), fieldIndex);
break;
case FieldType.Double:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadDouble(), fieldIndex);
break;
case FieldType.Single:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadFloat(), fieldIndex);
break;
case FieldType.Int:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadInt(), fieldIndex);
break;
case FieldType.Long:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadLong(), fieldIndex);
break;
case FieldType.SByte:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadSByte(), fieldIndex);
break;
case FieldType.Short:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadShort(), fieldIndex);
break;
case FieldType.UInt:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadUInt(), fieldIndex);
break;
case FieldType.ULong:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadULong(), fieldIndex);
break;
case FieldType.UShort:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadUShort(), fieldIndex);
break;
case FieldType.String:
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(reader.ReadString(), fieldIndex);
break;
case FieldType.Vector3:
{ //Cases aren't their own scope. Therefor we create a scope for them as they share the X,Y,Z local variables otherwise.
float x = reader.ReadFloat();
float y = reader.ReadFloat();
float z = reader.ReadFloat();
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(new Vector3(x, y, z), fieldIndex);
}
break;
case FieldType.Vector2:
{
float x = reader.ReadFloat();
float y = reader.ReadFloat();
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(new Vector2(x, y), fieldIndex);
}
break;
case FieldType.Quaternion:
{
float x = reader.ReadFloat();
float y = reader.ReadFloat();
float z = reader.ReadFloat();
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(Quaternion.Euler(x, y, z), fieldIndex);
}
break;
}
}
}
}
internal static void HandleAddObjects(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
if (netManager.NetworkConfig.HandleObjectSpawning)
{
ushort objectCount = reader.ReadUShort();
for (int i = 0; i < objectCount; i++)
{
bool isPlayerObject = reader.ReadBool();
uint networkId = reader.ReadUInt();
uint ownerId = reader.ReadUInt();
int prefabId = reader.ReadInt();
bool sceneObject = reader.ReadBool();
bool visible = reader.ReadBool();
float xPos = reader.ReadFloat();
float yPos = reader.ReadFloat();
float zPos = reader.ReadFloat();
float xRot = reader.ReadFloat();
float yRot = reader.ReadFloat();
float zRot = reader.ReadFloat();
if (isPlayerObject)
{
netManager.connectedClients.Add(ownerId, new NetworkedClient() { ClientId = ownerId });
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
}
else
{
GameObject go = SpawnManager.SpawnPrefabIndexClient(prefabId, networkId, ownerId,
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot));
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
go.GetComponent<NetworkedObject>().sceneObject = sceneObject;
}
}
}
}
internal static void HandleTimeSync(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
float netTime = reader.ReadFloat();
int timestamp = reader.ReadInt();
byte error;
int msDelay = NetworkingManager.singleton.NetworkConfig.NetworkTransport.GetRemoteDelayTimeMS(clientId, timestamp, out error);
netManager.networkTime = netTime + (msDelay / 1000f);
}
internal static void HandleCommand(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint networkId = reader.ReadUInt();
ushort orderId = reader.ReadUShort();
ulong hash = reader.ReadULong();
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
if (clientId != behaviour.ownerClientId)
return; // Not owner
MethodInfo targetMethod = null;
if (behaviour.cachedMethods.ContainsKey(Data.Cache.GetAttributeMethodName(hash)))
targetMethod = behaviour.cachedMethods[Data.Cache.GetAttributeMethodName(hash)];
byte paramCount = reader.ReadBits(5);
object[] methodParams = FieldTypeHelper.ReadObjects(reader, paramCount);
targetMethod.Invoke(behaviour, methodParams);
}
internal static void HandleRpc(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint networkId = reader.ReadUInt();
ushort orderId = reader.ReadUShort();
ulong hash = reader.ReadULong();
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
MethodInfo targetMethod = null;
if (behaviour.cachedMethods.ContainsKey(Data.Cache.GetAttributeMethodName(hash)))
targetMethod = behaviour.cachedMethods[Data.Cache.GetAttributeMethodName(hash)];
byte paramCount = reader.ReadBits(5);
object[] methodParams = FieldTypeHelper.ReadObjects(reader, paramCount);
targetMethod.Invoke(behaviour, methodParams);
}
internal static void HandleTargetRpc(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint networkId = reader.ReadUInt();
ushort orderId = reader.ReadUShort();
ulong hash = reader.ReadULong();
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
MethodInfo targetMethod = null;
if (behaviour.cachedMethods.ContainsKey(Data.Cache.GetAttributeMethodName(hash)))
targetMethod = behaviour.cachedMethods[Data.Cache.GetAttributeMethodName(hash)];
byte paramCount = reader.ReadBits(5);
object[] methodParams = FieldTypeHelper.ReadObjects(reader, paramCount);
targetMethod.Invoke(behaviour, methodParams);
}
internal static void HandleSetVisibility(uint clientId, byte[] incommingData, int channelId)
{
BitReader reader = new BitReader(incommingData);
uint networkId = reader.ReadUInt();
bool visibility = reader.ReadBool();
SpawnManager.spawnedObjects[networkId].SetLocalVisibility(visibility);
}
}
}

View File

@ -0,0 +1,350 @@
using System.Collections.Generic;
using MLAPI.Data;
using MLAPI.MonoBehaviours.Core;
using MLAPI.NetworkingManagerComponents.Binary;
using MLAPI.NetworkingManagerComponents.Cryptography;
using UnityEngine;
namespace MLAPI.NetworkingManagerComponents.Core
{
internal static partial class InternalMessageHandler
{
internal static byte[] FinalMessageBuffer;
internal static void PassthroughSend(uint targetId, uint sourceId, ushort messageType, int channelId, byte[] data, uint? networkId = null, ushort? orderId = null)
{
if (netManager.isHost && targetId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Host trying to send data to it's own client
Debug.LogWarning("MLAPI: Send method got message aimed at server from the server?");
return;
}
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(messageType);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(true);
writer.WriteUInt(sourceId);
writer.WriteAlignBits();
if (netManager.NetworkConfig.EncryptedChannelsHashSet.Contains(MessageManager.reverseChannels[channelId]))
writer.WriteByteArray(CryptographyHelper.Encrypt(data, netManager.connectedClients[targetId].AesKey));
else
writer.WriteByteArray(data);
writer.Finalize(ref FinalMessageBuffer);
byte error;
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), channelId, false, out error);
}
}
//RETURNS IF IT SUCCEDED OR FAILED BECAUSE OF NON-OBSERVER. ANY OTHER FAIL WILL RETURN TRUE
internal static bool Send(uint clientId, string messageType, string channelName, byte[] data, uint? fromNetId, uint? networkId = null, ushort? orderId = null, bool skipQueue = false)
{
uint targetClientId = clientId;
if (netManager.isHost && targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Don't invoke the message on our own machine. Instant stack overflow.
Debug.LogWarning("MLAPI: Cannot send message to own client");
return true;
}
else if (targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Client trying to send data to host
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
}
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we return
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientId))
return false;
bool isPassthrough = (!netManager.isServer && clientId != netManager.NetworkConfig.NetworkTransport.ServerNetId && netManager.NetworkConfig.AllowPassthroughMessages);
if (isPassthrough && !netManager.NetworkConfig.PassthroughMessageHashSet.Contains(MessageManager.messageTypes[messageType]))
{
Debug.LogWarning("MLAPI: The The MessageType " + messageType + " is not registered as an allowed passthrough message type.");
return true;
}
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(MessageManager.messageTypes[messageType]);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(isPassthrough);
if (isPassthrough)
writer.WriteUInt(clientId);
writer.WriteAlignBits();
if (netManager.NetworkConfig.EncryptedChannelsHashSet.Contains(channelName))
{
//This is an encrypted message.
byte[] encrypted;
if (netManager.isServer)
encrypted = CryptographyHelper.Encrypt(data, netManager.connectedClients[clientId].AesKey);
else
encrypted = CryptographyHelper.Encrypt(data, netManager.clientAesKey);
writer.WriteByteArray(encrypted);
}
else
writer.WriteByteArray(data);
if (isPassthrough)
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
writer.Finalize(ref FinalMessageBuffer);
byte error;
if (skipQueue)
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), MessageManager.channels[channelName], true, out error);
else
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), MessageManager.channels[channelName], false, out error);
return true;
}
}
internal static void Send(uint[] clientIds, string messageType, string channelName, byte[] data, uint? fromNetId, uint? networkId = null, ushort? orderId = null)
{
if (netManager.NetworkConfig.EncryptedChannelsHashSet.Contains(channelName))
{
Debug.LogWarning("MLAPI: Cannot send messages over encrypted channel to multiple clients.");
return;
}
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(MessageManager.messageTypes[messageType]);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(false);
writer.WriteAlignBits();
writer.WriteByteArray(data);
int channel = MessageManager.channels[channelName];
for (int i = 0; i < clientIds.Length; i++)
{
uint targetClientId = clientIds[i];
if (netManager.isHost && targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Don't invoke the message on our own machine. Instant stack overflow.
continue;
}
else if (targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Client trying to send data to host
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
}
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
continue;
writer.Finalize(ref FinalMessageBuffer);
byte error;
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), channel, false, out error);
}
}
}
internal static void Send(List<uint> clientIds, string messageType, string channelName, byte[] data, uint? fromNetId, uint? networkId = null, ushort? orderId = null)
{
if (netManager.NetworkConfig.EncryptedChannelsHashSet.Contains(channelName))
{
Debug.LogWarning("MLAPI: Cannot send messages over encrypted channel to multiple clients.");
return;
}
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(MessageManager.messageTypes[messageType]);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(false);
writer.WriteAlignBits();
writer.WriteByteArray(data);
int channel = MessageManager.channels[channelName];
for (int i = 0; i < clientIds.Count; i++)
{
uint targetClientId = clientIds[i];
if (netManager.isHost && targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Don't invoke the message on our own machine. Instant stack overflow.
continue;
}
else if (targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Client trying to send data to host
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
}
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
continue;
writer.Finalize(ref FinalMessageBuffer);
byte error;
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), channel, false, out error);
}
}
}
//RETURNS THE CLIENTIDS WHICH WAS NOT BEING OBSERVED
internal static List<uint> Send(string messageType, string channelName, byte[] data, uint? fromNetId, uint? networkId = null, ushort? orderId = null)
{
if (netManager.connectedClients.Count == 0)
return null;
if (netManager.NetworkConfig.EncryptedChannels.Contains(channelName))
{
Debug.LogWarning("MLAPI: Cannot send messages over encrypted channel to multiple clients.");
return null;
}
List<uint> nonObservedIds = new List<uint>();
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(MessageManager.messageTypes[messageType]);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(false);
writer.WriteAlignBits();
writer.WriteByteArray(data);
int channel = MessageManager.channels[channelName];
foreach (KeyValuePair<uint, NetworkedClient> pair in netManager.connectedClients)
{
uint targetClientId = pair.Key;
if (netManager.isHost && targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Don't invoke the message on our own machine. Instant stack overflow.
continue;
}
else if (targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Client trying to send data to host
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
}
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
{
nonObservedIds.Add(pair.Key);
continue;
}
writer.Finalize(ref FinalMessageBuffer);
byte error;
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), channel, false, out error);
}
return nonObservedIds;
}
}
//RETURNS THE CLIENTIDS WHICH WAS NOT BEING OBSERVED
internal static List<uint> Send(string messageType, string channelName, byte[] data, uint clientIdToIgnore, uint? fromNetId, uint? networkId = null, ushort? orderId = null)
{
if (netManager.NetworkConfig.EncryptedChannels.Contains(channelName))
{
Debug.LogWarning("MLAPI: Cannot send messages over encrypted channel to multiple clients.");
return null;
}
List<uint> nonObservedIds = new List<uint>();
using (BitWriter writer = new BitWriter())
{
writer.WriteUShort(MessageManager.messageTypes[messageType]);
writer.WriteBool(networkId != null);
if (networkId != null)
writer.WriteUInt(networkId.Value);
if (orderId != null)
writer.WriteUShort(orderId.Value);
writer.WriteBool(false);
writer.WriteAlignBits();
writer.WriteByteArray(data);
int channel = MessageManager.channels[channelName];
foreach (KeyValuePair<uint, NetworkedClient> pair in netManager.connectedClients)
{
if (pair.Key == clientIdToIgnore)
continue;
uint targetClientId = pair.Key;
if (netManager.isHost && targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Don't invoke the message on our own machine. Instant stack overflow.
continue;
}
else if (targetClientId == netManager.NetworkConfig.NetworkTransport.HostDummyId)
{
//Client trying to send data to host
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
}
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
{
nonObservedIds.Add(pair.Key);
continue;
}
writer.Finalize(ref FinalMessageBuffer);
byte error;
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(targetClientId, ref FinalMessageBuffer, (int)writer.GetFinalizeSize(), channel, false, out error);
}
return nonObservedIds;
}
}
}
}

View File

@ -0,0 +1,15 @@
using MLAPI.MonoBehaviours.Core;
namespace MLAPI.NetworkingManagerComponents.Core
{
internal static partial class InternalMessageHandler
{
private static NetworkingManager netManager
{
get
{
return NetworkingManager.singleton;
}
}
}
}

View File

@ -1,9 +1,7 @@
using MLAPI.Data;
using MLAPI.MonoBehaviours.Core;
using MLAPI.MonoBehaviours.Core;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
namespace MLAPI.NetworkingManagerComponents.Core
{
@ -62,8 +60,7 @@ namespace MLAPI.NetworkingManagerComponents.Core
Debug.LogWarning("MLAPI: Lag compensation simulations are only to be ran on the server.");
return;
}
NetId netId = new NetId(clientId);
float milisecondsDelay = NetworkTransport.GetCurrentRTT(netId.HostId, netId.ConnectionId, out error) / 2f;
float milisecondsDelay = NetworkingManager.singleton.NetworkConfig.NetworkTransport.GetCurrentRTT(clientId, out error) / 2f;
Simulate(milisecondsDelay * 1000f, action);
}

View File

@ -1,7 +1,7 @@
using MLAPI.Data;
using MLAPI.MonoBehaviours.Core;
using MLAPI.NetworkingManagerComponents.Binary;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace MLAPI.NetworkingManagerComponents.Core
@ -66,19 +66,19 @@ namespace MLAPI.NetworkingManagerComponents.Core
return null;
}
GameObject go = Pools[PoolNamesToIndexes[poolName]].SpawnObject(position, rotation);
using (MemoryStream stream = new MemoryStream(28))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(go.GetComponent<NetworkedObject>().NetworkId);
writer.Write(position.x);
writer.Write(position.y);
writer.Write(position.z);
writer.Write(rotation.eulerAngles.x);
writer.Write(rotation.eulerAngles.y);
writer.Write(rotation.eulerAngles.z);
}
NetworkingManager.singleton.Send("MLAPI_SPAWN_POOL_OBJECT", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(go.GetComponent<NetworkedObject>().NetworkId);
writer.WriteFloat(position.x);
writer.WriteFloat(position.y);
writer.WriteFloat(position.z);
writer.WriteFloat(rotation.eulerAngles.x);
writer.WriteFloat(rotation.eulerAngles.y);
writer.WriteFloat(rotation.eulerAngles.z);
InternalMessageHandler.Send("MLAPI_SPAWN_POOL_OBJECT", "MLAPI_INTERNAL", writer.Finalize(), null);
}
return go;
}
@ -95,13 +95,11 @@ namespace MLAPI.NetworkingManagerComponents.Core
return;
}
netObject.gameObject.SetActive(false);
using (MemoryStream stream = new MemoryStream(4))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(netObject.NetworkId);
}
NetworkingManager.singleton.Send("MLAPI_DESTROY_POOL_OBJECT", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(netObject.NetworkId);
InternalMessageHandler.Send("MLAPI_DESTROY_POOL_OBJECT", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
}

View File

@ -1,6 +1,6 @@
using MLAPI.MonoBehaviours.Core;
using MLAPI.NetworkingManagerComponents.Binary;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;
@ -58,13 +58,11 @@ namespace MLAPI.NetworkingManagerComponents.Core
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
sceneLoad.completed += OnSceneLoaded;
using(MemoryStream stream = new MemoryStream(4))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(sceneNameToIndex[sceneName]);
}
NetworkingManager.singleton.Send("MLAPI_SWITCH_SCENE", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(sceneNameToIndex[sceneName]);
InternalMessageHandler.Send("MLAPI_SWITCH_SCENE", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}

View File

@ -1,8 +1,7 @@
using MLAPI.Data;
using MLAPI.MonoBehaviours.Core;
using System;
using MLAPI.NetworkingManagerComponents.Binary;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace MLAPI.NetworkingManagerComponents.Core
@ -37,15 +36,14 @@ namespace MLAPI.NetworkingManagerComponents.Core
{
NetworkedObject netObject = SpawnManager.spawnedObjects[netId];
NetworkingManager.singleton.connectedClients[netObject.OwnerClientId].OwnedObjects.RemoveAll(x => x.NetworkId == netId);
netObject.ownerClientId = new NetId(0, 0, false, true).GetClientId();
using (MemoryStream stream = new MemoryStream(8))
netObject.ownerClientId = NetworkingManager.singleton.NetworkConfig.NetworkTransport.InvalidDummyId;
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(netId);
writer.Write(netObject.ownerClientId);
}
netManager.Send("MLAPI_CHANGE_OWNER", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(netId);
writer.WriteUInt(netObject.ownerClientId);
InternalMessageHandler.Send("MLAPI_CHANGE_OWNER", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
@ -55,14 +53,13 @@ namespace MLAPI.NetworkingManagerComponents.Core
NetworkingManager.singleton.connectedClients[netObject.OwnerClientId].OwnedObjects.RemoveAll(x => x.NetworkId == netId);
NetworkingManager.singleton.connectedClients[clientId].OwnedObjects.Add(netObject);
netObject.ownerClientId = clientId;
using (MemoryStream stream = new MemoryStream(8))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(netId);
writer.Write(clientId);
}
netManager.Send("MLAPI_CHANGE_OWNER", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(netId);
writer.WriteUInt(clientId);
InternalMessageHandler.Send("MLAPI_CHANGE_OWNER", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
@ -94,7 +91,10 @@ namespace MLAPI.NetworkingManagerComponents.Core
for (int i = 0; i < netObjects.Length; i++)
{
if (netObjects[i].sceneObject == null)
{
netObjects[i].InvokeBehaviourNetworkSpawn();
netObjects[i].sceneObject = true;
}
}
}
@ -109,29 +109,28 @@ namespace MLAPI.NetworkingManagerComponents.Core
if (pair.Value.sceneObject == null || pair.Value.sceneObject == true)
sceneObjectsToSync.Add(pair.Value);
}
int sizeOfStream = 2 + (38 * sceneObjectsToSync.Count); //The two is the base size, it's a ushort containing the amount of objects. Each object takes 38 bytes
using (MemoryStream stream = new MemoryStream(sizeOfStream))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
writer.WriteUShort((ushort)sceneObjectsToSync.Count);
for (int i = 0; i < sceneObjectsToSync.Count; i++)
{
writer.Write((ushort)sceneObjectsToSync.Count);
for (int i = 0; i < sceneObjectsToSync.Count; i++)
{
writer.Write(false); //isLocalPlayer
writer.Write(sceneObjectsToSync[i].NetworkId);
writer.Write(sceneObjectsToSync[i].OwnerClientId);
writer.Write(NetworkingManager.singleton.NetworkConfig.NetworkPrefabIds[sceneObjectsToSync[i].NetworkedPrefabName]);
writer.WriteBool(false); //isLocalPlayer
writer.WriteUInt(sceneObjectsToSync[i].NetworkId);
writer.WriteUInt(sceneObjectsToSync[i].OwnerClientId);
writer.WriteInt(NetworkingManager.singleton.NetworkConfig.NetworkPrefabIds[sceneObjectsToSync[i].NetworkedPrefabName]);
writer.WriteBool(sceneObjectsToSync[i].sceneObject == null ? true : sceneObjectsToSync[i].sceneObject.Value);
writer.Write(sceneObjectsToSync[i].transform.position.x);
writer.Write(sceneObjectsToSync[i].transform.position.y);
writer.Write(sceneObjectsToSync[i].transform.position.z);
writer.WriteFloat(sceneObjectsToSync[i].transform.position.x);
writer.WriteFloat(sceneObjectsToSync[i].transform.position.y);
writer.WriteFloat(sceneObjectsToSync[i].transform.position.z);
writer.Write(sceneObjectsToSync[i].transform.rotation.eulerAngles.x);
writer.Write(sceneObjectsToSync[i].transform.rotation.eulerAngles.y);
writer.Write(sceneObjectsToSync[i].transform.rotation.eulerAngles.z);
}
writer.WriteFloat(sceneObjectsToSync[i].transform.rotation.eulerAngles.x);
writer.WriteFloat(sceneObjectsToSync[i].transform.rotation.eulerAngles.y);
writer.WriteFloat(sceneObjectsToSync[i].transform.rotation.eulerAngles.z);
}
NetworkingManager.singleton.Send("MLAPI_ADD_OBJECTS", "MLAPI_INTERNAL", stream.GetBuffer());
InternalMessageHandler.Send("MLAPI_ADD_OBJECTS", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
@ -143,7 +142,7 @@ namespace MLAPI.NetworkingManagerComponents.Core
return null;
}
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.NetworkedPrefabs[networkedPrefabId].prefab);
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.NetworkedPrefabs[networkedPrefabId].prefab, position, rotation);
NetworkedObject netObject = go.GetComponent<NetworkedObject>();
if (netObject == null)
{
@ -195,36 +194,35 @@ namespace MLAPI.NetworkingManagerComponents.Core
netObject.ownerClientId = clientOwnerId.Value;
NetworkingManager.singleton.connectedClients[clientOwnerId.Value].OwnedObjects.Add(netObject);
}
using (MemoryStream stream = new MemoryStream(37))
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(false);
writer.Write(netObject.NetworkId);
writer.Write(netObject.OwnerClientId);
writer.Write(netManager.NetworkConfig.NetworkPrefabIds[netObject.NetworkedPrefabName]);
using (BitWriter writer = new BitWriter())
{
writer.WriteBool(false);
writer.WriteUInt(netObject.NetworkId);
writer.WriteUInt(netObject.OwnerClientId);
writer.WriteInt(netManager.NetworkConfig.NetworkPrefabIds[netObject.NetworkedPrefabName]);
writer.WriteBool(netObject.sceneObject == null ? true : netObject.sceneObject.Value);
writer.Write(netObject.transform.position.x);
writer.Write(netObject.transform.position.y);
writer.Write(netObject.transform.position.z);
writer.WriteFloat(netObject.transform.position.x);
writer.WriteFloat(netObject.transform.position.y);
writer.WriteFloat(netObject.transform.position.z);
writer.Write(netObject.transform.rotation.eulerAngles.x);
writer.Write(netObject.transform.rotation.eulerAngles.y);
writer.Write(netObject.transform.rotation.eulerAngles.z);
}
writer.WriteFloat(netObject.transform.rotation.eulerAngles.x);
writer.WriteFloat(netObject.transform.rotation.eulerAngles.y);
writer.WriteFloat(netObject.transform.rotation.eulerAngles.z);
netManager.Send("MLAPI_ADD_OBJECT", "MLAPI_INTERNAL", stream.GetBuffer());
InternalMessageHandler.Send("MLAPI_ADD_OBJECT", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
internal static GameObject SpawnPlayerObject(uint clientId, uint networkId)
internal static GameObject SpawnPlayerObject(uint clientId, uint networkId, Vector3 position, Quaternion rotation)
{
if (string.IsNullOrEmpty(netManager.NetworkConfig.PlayerPrefabName) || !netManager.NetworkConfig.NetworkPrefabIds.ContainsKey(netManager.NetworkConfig.PlayerPrefabName))
{
Debug.LogWarning("MLAPI: There is no player prefab in the NetworkConfig, or it's not registered at as a spawnable prefab");
return null;
}
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.NetworkedPrefabs[netManager.NetworkConfig.NetworkPrefabIds[netManager.NetworkConfig.PlayerPrefabName]].prefab);
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.NetworkedPrefabs[netManager.NetworkConfig.NetworkPrefabIds[netManager.NetworkConfig.PlayerPrefabName]].prefab, position, rotation);
NetworkedObject netObject = go.GetComponent<NetworkedObject>();
if (netObject == null)
{
@ -252,7 +250,7 @@ namespace MLAPI.NetworkingManagerComponents.Core
{
if (!spawnedObjects.ContainsKey(networkId) || (netManager != null && !netManager.NetworkConfig.HandleObjectSpawning))
return;
if (!new NetId(spawnedObjects[networkId].OwnerClientId).IsInvalid() && !spawnedObjects[networkId].isPlayerObject)
if (spawnedObjects[networkId].OwnerClientId != NetworkingManager.singleton.NetworkConfig.NetworkTransport.InvalidDummyId && !spawnedObjects[networkId].isPlayerObject)
{
//Someone owns it.
NetworkingManager.singleton.connectedClients[spawnedObjects[networkId].OwnerClientId].OwnedObjects.RemoveAll(x => x.NetworkId == networkId);
@ -263,13 +261,11 @@ namespace MLAPI.NetworkingManagerComponents.Core
releasedNetworkObjectIds.Push(networkId);
if (spawnedObjects[networkId] != null)
{
using (MemoryStream stream = new MemoryStream(4))
using (BitWriter writer = new BitWriter())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(networkId);
}
netManager.Send("MLAPI_DESTROY_OBJECT", "MLAPI_INTERNAL", stream.GetBuffer());
writer.WriteUInt(networkId);
InternalMessageHandler.Send("MLAPI_DESTROY_OBJECT", "MLAPI_INTERNAL", writer.Finalize(), null);
}
}
}

View File

@ -0,0 +1,123 @@
using MLAPI.NetworkingManagerComponents.Binary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MLAPI.NetworkingManagerComponents.Cryptography
{
public static class MessageDigest
{
public struct SHA1Result
{
public uint i0, i1, i2, i3, i4;
public byte Get(int idx) => (byte)((idx < 4 ? i0 : idx < 8 ? i1 : idx < 12 ? i2 : idx < 16 ? i3 : i4) >> (8 * (idx % 4)));
public byte[] ToArray()
{
byte[] b = new byte[20];
for (int i = 0; i < 20; ++i) b[i] = Get(i);
return b;
}
private ulong Collect(int bytes)
{
ulong u = 0;
for (int i = 0; i < bytes; ++i) u |= (ulong)Get(i) << (8*i);
return u;
}
public byte CastByte() => Get(0);
public ushort CastUShort() => (ushort)Collect(2);
public uint CastUInt() => (uint)Collect(4);
public ulong CastULong() => (ulong)Collect(8);
}
public static SHA1Result SHA1_Opt(byte[] message)
{
SHA1Result result = new SHA1Result
{
// Initialize buffers
i0 = 0x67452301,
i1 = 0xEFCDAB89,
i2 = 0x98BADCFE,
i3 = 0x10325476,
i4 = 0xC3D2E1F0
};
// Pad message
long len = message.Length * 8;
int
ml = message.Length + 1,
max = ml + ((960 - (ml * 8 % 512)) % 512) / 8 + 8;
// Replaces the allocation of a lot of bytes
byte GetMsg(int idx)
{
if (idx < message.Length)
return message[idx];
else if (idx == message.Length)
return 0x80;
else if (max - idx <= 8)
return (byte)((len >> ((max - 1 - idx) * 8)) & 255);
return 0;
}
int chunks = max / 64;
// Replaces the recurring allocation of 80 uints
uint ComputeIndex(int block, int idx)
{
if (idx < 16)
return (uint)((GetMsg(block * 64 + idx * 4) << 24) | (GetMsg(block * 64 + idx * 4 + 1) << 16) | (GetMsg(block * 64 + idx * 4 + 2) << 8) | (GetMsg(block * 64 + idx * 4 + 3) << 0));
else
return Rot(ComputeIndex(block, idx - 3) ^ ComputeIndex(block, idx - 8) ^ ComputeIndex(block, idx - 14) ^ ComputeIndex(block, idx - 16), 1);
}
// Perform hashing for each 512-bit block
for (int i = 0; i < chunks; ++i)
{
// Initialize chunk-hash
uint
a = result.i0,
b = result.i1,
c = result.i2,
d = result.i3,
e = result.i4;
// Do hash rounds
for (int t = 0; t < 80; ++t)
{
uint tmp = Rot(a, 5) + func(t, b, c, d) + e + K(t) + ComputeIndex(i, t);
e = d;
d = c;
c = Rot(b, 30);
b = a;
a = tmp;
}
result.i0 += a;
result.i1 += b;
result.i2 += c;
result.i3 += d;
result.i4 += e;
}
result.i0 = BinaryHelpers.SwapEndian(result.i0);
result.i1 = BinaryHelpers.SwapEndian(result.i1);
result.i2 = BinaryHelpers.SwapEndian(result.i2);
result.i3 = BinaryHelpers.SwapEndian(result.i3);
result.i4 = BinaryHelpers.SwapEndian(result.i4);
return result;
}
private static uint func(int t, uint b, uint c, uint d) =>
t < 20 ? (b & c) | ((~b) & d) :
t < 40 ? b ^ c ^ d :
t < 60 ? (b & c) | (b & d) | (c & d) :
/*t<80*/ b ^ c ^ d;
private static uint K(int t) =>
t < 20 ? 0x5A827999 :
t < 40 ? 0x6ED9EBA1 :
t < 60 ? 0x8F1BBCDC :
/*t<80*/ 0xCA62C1D6;
private static uint Rot(uint val, int by) => (val << by) | (val >> (32 - by));
}
}

219
Protocol.md Normal file
View File

@ -0,0 +1,219 @@
# MLAPI Protocol
#### NOTE
_This protocol specification is TEMPORARY, it's due to change and is just here to give you an aproximate idea of how the protocol works_
The MLAPI protocol is layered. The layers can be seen below.
The first layer is the UDP IP layer. Ontop of the UDP layer, the Unity Network Transport layer is built. And just after that, the MLAPI's protocol starts to appear. The MLAPI has two protocol stages. The first stage is the generic MLAPI message protocol. This is the protocol all messages use that is sent by the user or the MLAPI library.
The structure can be seen below, note that all messages use little endian format.
## MLAPI Generic Message Format
The first two bytes define what message type the message is. This message type is represented as a unsigned int16. The first 32 values are reserved for MLAPI messages. As of version 0.1.7, 10 messages are used. The rest of the message types are reserved for use by the user. That means the user can define ((2^16)-32)=65504 different messageTypes.
The next byte defines if the message is "targeted", see the targeted section on the wiki for more information. The byte is treated as a bool.
**If** the message is targeted (the previous byte was 1)
The next 4 bytes define the target networkId, a unsigned int32.
The next 2 bytes define the networkBehaviour orderId from the root networkObject root. That is, the first networkBehaviour under the networkObject we target (defined by previous 4 bytes) would be a 0, the second one would be a 1 and so on.
**Endif**
The next byte represents wheter or nor the message is a passthrough message, see the passthrough section on the wiki for more information. If the byte is 1, it's true, if it's 0 it's false.
**If** the message is a passthrough message (the previous byte was 1)
The next 4 bytes is a unsigned int32 specifying the clientId this message targted at.
**Endif**
The next two bytes is a unsigned int16 representing the size of the message payload (next field). If the channel this message is sent on is an encrypted channel, this will be the size of the encrypted payload.
The last field is the message payload. It has the size specified in the previous field. This is where the next layer sits. This is the messageData. If it's a user messageType, this is the data you send with your message. Otherwise, see the next section for the MLAPI internal message formats
## MLAPI Internal Messages
### MLAPI_CONNECTION_REQUEST (MessageType 0)
This message type is sent Client to Server. It's purpose is to ask the Server to join by providing information that help the server decide. This is the first message of the MLAPI Handshake
The first 32 bytes is a SHA256 hash of certain fields in the NetworkConfig.
**If** encryption is turned on
The next two bytes represents a unsigned int16 specifying the size of the public diffie hellman key.
The next bytes has the size specified above and contains the diffie hellman public key of the client.
**Endif**
**If** conectionApproval is turned on
The next two bytes represents a unsigned int16 specifying the size of the connectionData.
The next bytes has the size specified above and contains the connectionData.
**Endif**
### MLAPI_CONNECTION_APPROVED (MessageType 1)
This message is sent Server to Client, it's purpose is to notify Client's that their request has been approved and they are now fully joined. This is the last handshake message. (The request being MessageType 0)
The first two bytes represents a unsigned int32 containing the clientId the server has assigned to the recepient.
**If** scene management is enabled
The next 4 bytes represents a unsigned int32 containing the sceneIndex the server is currently using.
**Endif**
**If** encryption is enabled
The next two bytes represents a unsigned int16 specifying the size of the next field.
The next bytes have the size of the previous field and represents the diffie hellman public key.
**If** sign keyexchange is enabled
The next two bytes represents a unsigned int16 specifying the size of the next field.
The next bytes have the size of the previous field and contains a RSA signature of a SHA512 hash of the diffie hellman public key.
**Endif**
**Endif**
The next 4 bytes represents a single precision floating point value containing the current networkTime.
The next 4 bytes represents a signed int32 and contains a network timestamp generated by the NetworkTransport.
The next 4 bytes represents a signed int32 and contains the number of connected clients.
The next (4 * previousField) bytes is a sequence of unsigned int32 containing the clientId of a client.
**If** handle object spawning is turned on
The next 4 bytes represents a signed int32 containing the amount of networkedObjects is spawned.
The next (39 * previousField) represents information about each networkedObject. That is, each NetworkedObject has 39 bytes sent about it. A NetworkedField structure looks like this:
First byte specifies if the object is a playerObject. If the byte is 1, it's true, if it's 0, it's false
The next 4 bytes is a unsigned int32 containing the networkId of the object
The next 4 bytes is a unsigned int32 containing the ownerId of the object
The next 4 bytes is a signed int32 containing the networkedPrefabId to create the object from
The next byte is a boolean specifying if the object is active in the hierarchy
The next byte is a boolean specifying if the object is a sceneObject
The next 4 bytes is a single precision floating point value containing the x position of the object
The next 4 bytes is a single precision floating point value containing the y position of the object
The next 4 bytes is a single precision floating point value containing the z position of the object
The next 4 bytes is a single precision floating point value containing the x rotation of the object
The next 4 bytes is a single precision floating point value containing the y rotation of the object
The next 4 bytes is a single precision floating point value containing the z rotation of the object
**Endif**
### MLAPI_ADD_OBJECT (MessageType 2)
Sent server to client
**If** handle object spawning
The first byte is a boolean, represents if it's a player object or not
The next 4 bytes is a unsigned int32 representing the networkId
The next 4 bytes is a unsigned int32 representing the ownerId
The next 4 bytes is signed int32 represents the prefabId
The next byte is a bool representing if it's a sceneObject
The next 4 bytes is a single precision floating point value containing the x position of the object
The next 4 bytes is a single precision floating point value containing the y position of the object
The next 4 bytes is a single precision floating point value containing the z position of the object
The next 4 bytes is a single precision floating point value containing the x rotation of the object
The next 4 bytes is a single precision floating point value containing the y rotation of the object
The next 4 bytes is a single precision floating point value containing the z rotation of the object
**Else**
The first 4 bytes represents a unsigned int32 containing the ownerId
**Endif**
### MLAPI_CLIENT_DISCONNECT (MessageType 3)
Sent server to client
The first 4 bytes is a unsigned int32 containing the clientId
### MLAPI_DESTROY_OBJECT (MessageType 4)
Server to client
The first 4 bytes is a unsigned int32 containing the netId
### MLAPI_SWITCH_SCENE (MessageType 5)
Server to client
The first 4 bytes is a unsigned int32 containing the sceneId
### MLAPI_SPAWN_POOL_OBJECT (MessageType 6)
Server to client
The first 4 bytes is a unsigned int32 containing the netId
The next 4 bytes is a single precision floating point value containing the x position of the object
The next 4 bytes is a single precision floating point value containing the y position of the object
The next 4 bytes is a single precision floating point value containing the z position of the object
The next 4 bytes is a single precision floating point value containing the x rotation of the object
The next 4 bytes is a single precision floating point value containing the y rotation of the object
The next 4 bytes is a single precision floating point value containing the z rotation of the object
### MLAPI_DESTROY_POOL_OBJECT (MessageType 7)
Server to client
The first 4 bytes is a unsigned int32 containing the netId
### MLAPI_CHANGE_OWNER (MessageType 8)
Server to client
The first 4 bytes is a unsigned int32 containing the netId
The first 4 bytes is a unsigned int32 containing the ownerClientId
### MLAPI_SYNC_VAR_UPDATE (MessageType 9)
Server to client
The first byte represents the amount of dirty fields
The next 4 bytes is a unsigned int32 containing the netId
The next 2 bytes is a unsigned int16 containing the order of the netBehaviour
//HERE IS THE SYNCVAR DATA. NOTHING TO OPTIMIZE
### MLAPI_ADD_OBJECTS (MessageType 10)
Server to client
Same as ADD_OBJECT, but contains two bytes (unsigned int16 specifying the amount of objects, then repeated ADD_OBJECT patterns)

View File

@ -9,6 +9,7 @@ There is also a autogenerated Sandcastle [API reference](https://twotenpvp.githu
### Requirements
* Unity 2017 or newer
* .NET 4.6 or .NET 3.5 with .NET 2.0 non subset [Issue](https://github.com/TwoTenPvP/MLAPI/issues/43)
## Feature highlights
* Host support (Client hosts the server)
@ -30,19 +31,19 @@ There is also a autogenerated Sandcastle [API reference](https://twotenpvp.githu
* Networked NavMeshAgent \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/NetworkedNavMeshAgent)\]
* Networked Object Pooling \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/Networked-Object-Pooling)\]
* Synced Vars \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/SyncedVars)\]
* Targeted Synced Vars \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/SyncedVars#target)\]
* Encryption \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/Message-Encryption)\]
## Planned features
* Area of interest
* BinaryWriter & BinaryReader replacement
* Message compression
* Super efficient BitWriter & BitReader \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/BitWriter-&-BitReader)\]
* Command & Rpc system like HLAPI to allow for quick transfer from HLAPI to MLAPI \[[Wiki page](https://github.com/TwoTenPvP/MLAPI/wiki/Attribute-Message-System)\]
## Example
[Example project](https://github.com/TwoTenPvP/MLAPI-Examples)
The example project has a much lower priority compared to the library itself. If something doesn't exist in the example nor the wiki. Please open an issue on GitHub.
## Special thanks
Special thanks to [Gabriel Tofvesson](https://github.com/GabrielTofvesson) for writing the BitWriter, BitReader & ECDH implementation
## Issues and missing features

View File

@ -1,10 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<HelpKI>
<HelpKINode Title="Address field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Address.htm" />
<HelpKINode Title="AesKey field" Url="html/F_MLAPI_Data_NetworkedClient_AesKey.htm" />
<HelpKINode Title="AllowPassthroughMessages field" Url="html/F_MLAPI_Data_NetworkingConfiguration_AllowPassthroughMessages.htm" />
<HelpKINode Title="AllowPassthroughMessages field" Url="html/F_MLAPI_Data_NetworkConfig_AllowPassthroughMessages.htm" />
<HelpKINode Title="animator property" Url="html/P_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_animator.htm" />
<HelpKINode Title="AssumeSyncedSends field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_AssumeSyncedSends.htm" />
<HelpKINode Title="AvgTimeBetweenPointsMs property" Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_AvgTimeBetweenPointsMs.htm" />
<HelpKINode Title="BinaryHelpers class">
<HelpKINode Title="BinaryHelpers Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers.htm" />
</HelpKINode>
<HelpKINode Title="BinaryHelpers.SwapEndian method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers_SwapEndian.htm" />
<HelpKINode Title="BinaryIgnore class">
<HelpKINode Title="BinaryIgnore Class" Url="html/T_MLAPI_Attributes_BinaryIgnore.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Attributes_BinaryIgnore__ctor.htm" />
@ -21,16 +26,106 @@
<HelpKINode Title="BinarySerializer.Deserialize&lt;T&gt; method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Deserialize__1.htm" />
<HelpKINode Title="BinarySerializer.Serialize(Of T) method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Serialize__1.htm" />
<HelpKINode Title="BinarySerializer.Serialize&lt;T&gt; method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Serialize__1.htm" />
<HelpKINode Title="BitReader class">
<HelpKINode Title="BitReader Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitReader.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BitReader.htm" />
</HelpKINode>
<HelpKINode Title="BitReader.BitReader constructor" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader__ctor.htm" />
<HelpKINode Title="BitReader.ReadBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBits.htm" />
<HelpKINode Title="BitReader.ReadBool method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBool.htm" />
<HelpKINode Title="BitReader.ReadByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByte.htm" />
<HelpKINode Title="BitReader.ReadByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByteArray.htm" />
<HelpKINode Title="BitReader.ReadDouble method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDouble.htm" />
<HelpKINode Title="BitReader.ReadDoubleArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDoubleArray.htm" />
<HelpKINode Title="BitReader.ReadFloat method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloat.htm" />
<HelpKINode Title="BitReader.ReadFloatArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloatArray.htm" />
<HelpKINode Title="BitReader.ReadInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadInt.htm" />
<HelpKINode Title="BitReader.ReadIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadIntArray.htm" />
<HelpKINode Title="BitReader.ReadLong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLong.htm" />
<HelpKINode Title="BitReader.ReadLongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLongArray.htm" />
<HelpKINode Title="BitReader.ReadSByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByte.htm" />
<HelpKINode Title="BitReader.ReadSByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByteArray.htm" />
<HelpKINode Title="BitReader.ReadShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShort.htm" />
<HelpKINode Title="BitReader.ReadShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShortArray.htm" />
<HelpKINode Title="BitReader.ReadString method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadString.htm" />
<HelpKINode Title="BitReader.ReadUInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUInt.htm" />
<HelpKINode Title="BitReader.ReadUIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUIntArray.htm" />
<HelpKINode Title="BitReader.ReadULong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULong.htm" />
<HelpKINode Title="BitReader.ReadULongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULongArray.htm" />
<HelpKINode Title="BitReader.ReadUShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShort.htm" />
<HelpKINode Title="BitReader.ReadUShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShortArray.htm" />
<HelpKINode Title="BitReader.SkipPadded method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_SkipPadded.htm" />
<HelpKINode Title="BitWriter class">
<HelpKINode Title="BitWriter Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitWriter.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BitWriter.htm" />
</HelpKINode>
<HelpKINode Title="BitWriter.BitWriter constructor" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter__ctor.htm" />
<HelpKINode Title="BitWriter.Dispose method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Dispose.htm" />
<HelpKINode Title="BitWriter.Finalize method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Finalize.htm" />
<HelpKINode Title="BitWriter.GetFinalizeSize method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_GetFinalizeSize.htm" />
<HelpKINode Title="BitWriter.WriteAlignBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteAlignBits.htm" />
<HelpKINode Title="BitWriter.WriteBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBits.htm" />
<HelpKINode Title="BitWriter.WriteBool method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBool.htm" />
<HelpKINode Title="BitWriter.WriteByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByte.htm" />
<HelpKINode Title="BitWriter.WriteByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByteArray.htm" />
<HelpKINode Title="BitWriter.WriteDouble method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDouble.htm" />
<HelpKINode Title="BitWriter.WriteDoubleArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDoubleArray.htm" />
<HelpKINode Title="BitWriter.WriteFloat method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloat.htm" />
<HelpKINode Title="BitWriter.WriteFloatArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloatArray.htm" />
<HelpKINode Title="BitWriter.WriteInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteInt.htm" />
<HelpKINode Title="BitWriter.WriteIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteIntArray.htm" />
<HelpKINode Title="BitWriter.WriteLong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLong.htm" />
<HelpKINode Title="BitWriter.WriteLongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLongArray.htm" />
<HelpKINode Title="BitWriter.WriteSByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByte.htm" />
<HelpKINode Title="BitWriter.WriteSByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByteArray.htm" />
<HelpKINode Title="BitWriter.WriteShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShort.htm" />
<HelpKINode Title="BitWriter.WriteShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShortArray.htm" />
<HelpKINode Title="BitWriter.WriteString method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteString.htm" />
<HelpKINode Title="BitWriter.WriteUInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUInt.htm" />
<HelpKINode Title="BitWriter.WriteUIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUIntArray.htm" />
<HelpKINode Title="BitWriter.WriteULong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULong.htm" />
<HelpKINode Title="BitWriter.WriteULongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULongArray.htm" />
<HelpKINode Title="BitWriter.WriteUShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShort.htm" />
<HelpKINode Title="BitWriter.WriteUShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShortArray.htm" />
<HelpKINode Title="ChangeOwnership method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_ChangeOwnership.htm" />
<HelpKINode Title="Channels field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Channels.htm" />
<HelpKINode Title="Channel class">
<HelpKINode Title="Channel Class" Url="html/T_MLAPI_Data_Channel.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_Channel__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_Channel.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_Channel.htm" />
</HelpKINode>
<HelpKINode Title="Channel.Channel constructor" Url="html/M_MLAPI_Data_Channel__ctor.htm" />
<HelpKINode Title="Channel.Encrypted field" Url="html/F_MLAPI_Data_Channel_Encrypted.htm" />
<HelpKINode Title="Channel.Name field" Url="html/F_MLAPI_Data_Channel_Name.htm" />
<HelpKINode Title="Channel.Type field" Url="html/F_MLAPI_Data_Channel_Type.htm" />
<HelpKINode Title="Channels field" Url="html/F_MLAPI_Data_NetworkConfig_Channels.htm" />
<HelpKINode Title="ClearCache method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_ClearCache.htm" />
<HelpKINode Title="ClientConnectionBufferTimeout field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ClientConnectionBufferTimeout.htm" />
<HelpKINode Title="ClientConnectionBufferTimeout field" Url="html/F_MLAPI_Data_NetworkConfig_ClientConnectionBufferTimeout.htm" />
<HelpKINode Title="ClientId field" Url="html/F_MLAPI_Data_NetworkedClient_ClientId.htm" />
<HelpKINode Title="CompareConfig method" Url="html/M_MLAPI_Data_NetworkingConfiguration_CompareConfig.htm" />
<HelpKINode Title="ClientRpc class">
<HelpKINode Title="ClientRpc Class" Url="html/T_MLAPI_Attributes_ClientRpc.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Attributes_ClientRpc__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Attributes_ClientRpc.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_Attributes_ClientRpc.htm" />
</HelpKINode>
<HelpKINode Title="ClientRpc.ClientRpc constructor" Url="html/M_MLAPI_Attributes_ClientRpc__ctor.htm" />
<HelpKINode Title="Command class">
<HelpKINode Title="Command Class" Url="html/T_MLAPI_Attributes_Command.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Attributes_Command__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Attributes_Command.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_Attributes_Command.htm" />
</HelpKINode>
<HelpKINode Title="Command.Command constructor" Url="html/M_MLAPI_Attributes_Command__ctor.htm" />
<HelpKINode Title="CompareConfig method" Url="html/M_MLAPI_Data_NetworkConfig_CompareConfig.htm" />
<HelpKINode Title="ConnectAddress field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectAddress.htm" />
<HelpKINode Title="ConnectedClients property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectedClients.htm" />
<HelpKINode Title="ConnectionApproval field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApproval.htm" />
<HelpKINode Title="ConnectionApprovalCallback field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApprovalCallback.htm" />
<HelpKINode Title="ConnectionData field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionData.htm" />
<HelpKINode Title="ConnectionApproval field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionApproval.htm" />
<HelpKINode Title="ConnectionApprovalCallback field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectionApprovalCallback.htm" />
<HelpKINode Title="ConnectionData field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionData.htm" />
<HelpKINode Title="ConnectionId field" Url="html/F_MLAPI_Data_NetId_ConnectionId.htm" />
<HelpKINode Title="ConnectPort field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectPort.htm" />
<HelpKINode Title="CorrectionDelay field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_CorrectionDelay.htm" />
<HelpKINode Title="CreatePool method" Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_CreatePool.htm" />
<HelpKINode Title="CryptographyHelper class">
@ -40,45 +135,59 @@
<HelpKINode Title="CryptographyHelper.Decrypt method" Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Decrypt.htm" />
<HelpKINode Title="CryptographyHelper.Encrypt method" Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Encrypt.htm" />
<HelpKINode Title="Decrypt method" Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Decrypt.htm" />
<HelpKINode Title="DefaultPlayerPrefab field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DefaultPlayerPrefab.htm" />
<HelpKINode Title="DeregisterMessageHandler method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_DeregisterMessageHandler.htm" />
<HelpKINode Title="Deserialize(Of T) method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Deserialize__1.htm" />
<HelpKINode Title="Deserialize&lt;T&gt; method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Deserialize__1.htm" />
<HelpKINode Title="DestroyPool method" Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_DestroyPool.htm" />
<HelpKINode Title="DestroyPoolObject method" Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_DestroyPoolObject.htm" />
<HelpKINode Title="Dispose method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Dispose.htm" />
<HelpKINode Title="DontDestroy field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DontDestroy.htm" />
<HelpKINode Title="DriftCorrectionPercentage field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_DriftCorrectionPercentage.htm" />
<HelpKINode Title="EnableEncryption field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableEncryption.htm" />
<HelpKINode Title="EnableEncryption field" Url="html/F_MLAPI_Data_NetworkConfig_EnableEncryption.htm" />
<HelpKINode Title="EnableProximity field">
<HelpKINode Title="NetworkedAnimator.EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_EnableProximity.htm" />
<HelpKINode Title="NetworkedNavMeshAgent.EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_EnableProximity.htm" />
<HelpKINode Title="NetworkedTransform.EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_EnableProximity.htm" />
</HelpKINode>
<HelpKINode Title="EnableSceneSwitching field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableSceneSwitching.htm" />
<HelpKINode Title="EnableSceneSwitching field" Url="html/F_MLAPI_Data_NetworkConfig_EnableSceneSwitching.htm" />
<HelpKINode Title="EnableTimeResync field" Url="html/F_MLAPI_Data_NetworkConfig_EnableTimeResync.htm" />
<HelpKINode Title="Encrypt method" Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Encrypt.htm" />
<HelpKINode Title="EncryptedChannels field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EncryptedChannels.htm" />
<HelpKINode Title="EventTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EventTickrate.htm" />
<HelpKINode Title="Encrypted field" Url="html/F_MLAPI_Data_Channel_Encrypted.htm" />
<HelpKINode Title="Equality operator" Url="html/M_MLAPI_Data_NetId_op_Equality.htm" />
<HelpKINode Title="Equals method" Url="html/M_MLAPI_Data_NetId_Equals.htm" />
<HelpKINode Title="EventTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_EventTickrate.htm" />
<HelpKINode Title="Finalize method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Finalize.htm" />
<HelpKINode Title="GetChunkedMessage method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetChunkedMessage.htm" />
<HelpKINode Title="GetConfig method" Url="html/M_MLAPI_Data_NetworkingConfiguration_GetConfig.htm" />
<HelpKINode Title="GetClientId method" Url="html/M_MLAPI_Data_NetId_GetClientId.htm" />
<HelpKINode Title="GetConfig method" Url="html/M_MLAPI_Data_NetworkConfig_GetConfig.htm" />
<HelpKINode Title="GetFinalizeSize method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_GetFinalizeSize.htm" />
<HelpKINode Title="GetHashCode method" Url="html/M_MLAPI_Data_NetId_GetHashCode.htm" />
<HelpKINode Title="GetMessageOrdered method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetMessageOrdered.htm" />
<HelpKINode Title="GetMessageUnordered method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetMessageUnordered.htm" />
<HelpKINode Title="GetNetworkedObject method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_GetNetworkedObject.htm" />
<HelpKINode Title="GetParameterAutoSend method" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_GetParameterAutoSend.htm" />
<HelpKINode Title="HandleObjectSpawning field" Url="html/F_MLAPI_Data_NetworkingConfiguration_HandleObjectSpawning.htm" />
<HelpKINode Title="HandleObjectSpawning field" Url="html/F_MLAPI_Data_NetworkConfig_HandleObjectSpawning.htm" />
<HelpKINode Title="HasDuplicates method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_HasDuplicates.htm" />
<HelpKINode Title="HasMissingParts method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_HasMissingParts.htm" />
<HelpKINode Title="hook field" Url="html/F_MLAPI_Attributes_SyncedVar_hook.htm" />
<HelpKINode Title="hookMethodName field" Url="html/F_MLAPI_Attributes_SyncedVar_hookMethodName.htm" />
<HelpKINode Title="HostId field" Url="html/F_MLAPI_Data_NetId_HostId.htm" />
<HelpKINode Title="Inequality operator" Url="html/M_MLAPI_Data_NetId_op_Inequality.htm" />
<HelpKINode Title="InterpolatePosition field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_InterpolatePosition.htm" />
<HelpKINode Title="InterpolateServer field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_InterpolateServer.htm" />
<HelpKINode Title="InvokeClientRpc method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeClientRpc.htm" />
<HelpKINode Title="InvokeCommand method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeCommand.htm" />
<HelpKINode Title="InvokeTargetRpc method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeTargetRpc.htm" />
<HelpKINode Title="isClient property">
<HelpKINode Title="NetworkedBehaviour.isClient Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isClient.htm" />
<HelpKINode Title="NetworkingManager.isClient Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_isClient.htm" />
</HelpKINode>
<HelpKINode Title="IsClientConnected property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_IsClientConnected.htm" />
<HelpKINode Title="IsHost method" Url="html/M_MLAPI_Data_NetId_IsHost.htm" />
<HelpKINode Title="isHost property">
<HelpKINode Title="NetworkedBehaviour.isHost Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isHost.htm" />
<HelpKINode Title="NetworkingManager.isHost Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_isHost.htm" />
</HelpKINode>
<HelpKINode Title="IsInvalid method" Url="html/M_MLAPI_Data_NetId_IsInvalid.htm" />
<HelpKINode Title="isLocalPlayer property">
<HelpKINode Title="NetworkedBehaviour.isLocalPlayer Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isLocalPlayer.htm" />
<HelpKINode Title="NetworkedObject.isLocalPlayer Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isLocalPlayer.htm" />
@ -102,9 +211,9 @@
</HelpKINode>
<HelpKINode Title="LagCompensationManager.Simulate method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm" />
<HelpKINode Title="LagCompensationManager.SimulationObjects property" Url="html/P_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_SimulationObjects.htm" />
<HelpKINode Title="MaxConnections field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxConnections.htm" />
<HelpKINode Title="MaxReceiveEventsPerTickRate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxReceiveEventsPerTickRate.htm" />
<HelpKINode Title="MessageBufferSize field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageBufferSize.htm" />
<HelpKINode Title="MaxConnections field" Url="html/F_MLAPI_Data_NetworkConfig_MaxConnections.htm" />
<HelpKINode Title="MaxReceiveEventsPerTickRate field" Url="html/F_MLAPI_Data_NetworkConfig_MaxReceiveEventsPerTickRate.htm" />
<HelpKINode Title="MessageBufferSize field" Url="html/F_MLAPI_Data_NetworkConfig_MessageBufferSize.htm" />
<HelpKINode Title="MessageChunker class">
<HelpKINode Title="MessageChunker Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm" />
@ -115,15 +224,33 @@
<HelpKINode Title="MessageChunker.HasDuplicates method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_HasDuplicates.htm" />
<HelpKINode Title="MessageChunker.HasMissingParts method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_HasMissingParts.htm" />
<HelpKINode Title="MessageChunker.IsOrdered method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_IsOrdered.htm" />
<HelpKINode Title="MessageTypes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageTypes.htm" />
<HelpKINode Title="MessageType class">
<HelpKINode Title="MessageType Class" Url="html/T_MLAPI_Data_MessageType.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_MessageType__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_MessageType.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_MessageType.htm" />
</HelpKINode>
<HelpKINode Title="MessageType.MessageType constructor" Url="html/M_MLAPI_Data_MessageType__ctor.htm" />
<HelpKINode Title="MessageType.Name field" Url="html/F_MLAPI_Data_MessageType_Name.htm" />
<HelpKINode Title="MessageType.Passthrough field" Url="html/F_MLAPI_Data_MessageType_Passthrough.htm" />
<HelpKINode Title="MessageTypes field" Url="html/F_MLAPI_Data_NetworkConfig_MessageTypes.htm" />
<HelpKINode Title="Meta field" Url="html/F_MLAPI_Data_NetId_Meta.htm" />
<HelpKINode Title="MinDegrees field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_MinDegrees.htm" />
<HelpKINode Title="MinMeters field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_MinMeters.htm" />
<HelpKINode Title="MLAPI.Attributes namespace" Url="html/N_MLAPI_Attributes.htm" />
<HelpKINode Title="MLAPI.Attributes.BinaryIgnore class" Url="html/T_MLAPI_Attributes_BinaryIgnore.htm" />
<HelpKINode Title="MLAPI.Attributes.ClientRpc class" Url="html/T_MLAPI_Attributes_ClientRpc.htm" />
<HelpKINode Title="MLAPI.Attributes.Command class" Url="html/T_MLAPI_Attributes_Command.htm" />
<HelpKINode Title="MLAPI.Attributes.SyncedVar class" Url="html/T_MLAPI_Attributes_SyncedVar.htm" />
<HelpKINode Title="MLAPI.Attributes.TargetRpc class" Url="html/T_MLAPI_Attributes_TargetRpc.htm" />
<HelpKINode Title="MLAPI.Data namespace" Url="html/N_MLAPI_Data.htm" />
<HelpKINode Title="MLAPI.Data.Channel class" Url="html/T_MLAPI_Data_Channel.htm" />
<HelpKINode Title="MLAPI.Data.MessageType class" Url="html/T_MLAPI_Data_MessageType.htm" />
<HelpKINode Title="MLAPI.Data.NetId structure" Url="html/T_MLAPI_Data_NetId.htm" />
<HelpKINode Title="MLAPI.Data.NetworkConfig class" Url="html/T_MLAPI_Data_NetworkConfig.htm" />
<HelpKINode Title="MLAPI.Data.NetworkedClient class" Url="html/T_MLAPI_Data_NetworkedClient.htm" />
<HelpKINode Title="MLAPI.Data.NetworkingConfiguration class" Url="html/T_MLAPI_Data_NetworkingConfiguration.htm" />
<HelpKINode Title="MLAPI.Data.NetworkedPrefab class" Url="html/T_MLAPI_Data_NetworkedPrefab.htm" />
<HelpKINode Title="MLAPI.Data.TransportHost class" Url="html/T_MLAPI_Data_TransportHost.htm" />
<HelpKINode Title="MLAPI.MonoBehaviours.Core namespace" Url="html/N_MLAPI_MonoBehaviours_Core.htm" />
<HelpKINode Title="MLAPI.MonoBehaviours.Core.NetworkedBehaviour class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm" />
<HelpKINode Title="MLAPI.MonoBehaviours.Core.NetworkedObject class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm" />
@ -134,7 +261,10 @@
<HelpKINode Title="MLAPI.MonoBehaviours.Prototyping.NetworkedNavMeshAgent class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm" />
<HelpKINode Title="MLAPI.MonoBehaviours.Prototyping.NetworkedTransform class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary namespace" Url="html/N_MLAPI_NetworkingManagerComponents_Binary.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary.BinaryHelpers class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary.BinarySerializer class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary.BitReader class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitReader.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary.BitWriter class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitWriter.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Binary.MessageChunker class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Core namespace" Url="html/N_MLAPI_NetworkingManagerComponents_Core.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Core.LagCompensationManager class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm" />
@ -143,7 +273,67 @@
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Cryptography namespace" Url="html/N_MLAPI_NetworkingManagerComponents_Cryptography.htm" />
<HelpKINode Title="MLAPI.NetworkingManagerComponents.Cryptography.CryptographyHelper class" Url="html/T_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper.htm" />
<HelpKINode Title="MyClientId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_MyClientId.htm" />
<HelpKINode Title="Name field">
<HelpKINode Title="Channel.Name Field" Url="html/F_MLAPI_Data_Channel_Name.htm" />
<HelpKINode Title="MessageType.Name Field" Url="html/F_MLAPI_Data_MessageType_Name.htm" />
<HelpKINode Title="TransportHost.Name Field" Url="html/F_MLAPI_Data_TransportHost_Name.htm" />
</HelpKINode>
<HelpKINode Title="NetId structure">
<HelpKINode Title="NetId Structure" Url="html/T_MLAPI_Data_NetId.htm" />
<HelpKINode Title="constructor" Url="html/Overload_MLAPI_Data_NetId__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_NetId.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_NetId.htm" />
<HelpKINode Title="operators" Url="html/Operators_T_MLAPI_Data_NetId.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_Data_NetId.htm" />
</HelpKINode>
<HelpKINode Title="NetId.ConnectionId field" Url="html/F_MLAPI_Data_NetId_ConnectionId.htm" />
<HelpKINode Title="NetId.Equality operator" Url="html/M_MLAPI_Data_NetId_op_Equality.htm" />
<HelpKINode Title="NetId.Equals method" Url="html/M_MLAPI_Data_NetId_Equals.htm" />
<HelpKINode Title="NetId.GetClientId method" Url="html/M_MLAPI_Data_NetId_GetClientId.htm" />
<HelpKINode Title="NetId.GetHashCode method" Url="html/M_MLAPI_Data_NetId_GetHashCode.htm" />
<HelpKINode Title="NetId.HostId field" Url="html/F_MLAPI_Data_NetId_HostId.htm" />
<HelpKINode Title="NetId.Inequality operator" Url="html/M_MLAPI_Data_NetId_op_Inequality.htm" />
<HelpKINode Title="NetId.IsHost method" Url="html/M_MLAPI_Data_NetId_IsHost.htm" />
<HelpKINode Title="NetId.IsInvalid method" Url="html/M_MLAPI_Data_NetId_IsInvalid.htm" />
<HelpKINode Title="NetId.Meta field" Url="html/F_MLAPI_Data_NetId_Meta.htm" />
<HelpKINode Title="NetId.NetId constructor" Url="html/Overload_MLAPI_Data_NetId__ctor.htm" />
<HelpKINode Title="NetId.ServerNetId property" Url="html/P_MLAPI_Data_NetId_ServerNetId.htm" />
<HelpKINode Title="NetworkConfig class">
<HelpKINode Title="NetworkConfig Class" Url="html/T_MLAPI_Data_NetworkConfig.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_NetworkConfig__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_NetworkConfig.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_NetworkConfig.htm" />
</HelpKINode>
<HelpKINode Title="NetworkConfig field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_NetworkConfig.htm" />
<HelpKINode Title="NetworkConfig.AllowPassthroughMessages field" Url="html/F_MLAPI_Data_NetworkConfig_AllowPassthroughMessages.htm" />
<HelpKINode Title="NetworkConfig.Channels field" Url="html/F_MLAPI_Data_NetworkConfig_Channels.htm" />
<HelpKINode Title="NetworkConfig.ClientConnectionBufferTimeout field" Url="html/F_MLAPI_Data_NetworkConfig_ClientConnectionBufferTimeout.htm" />
<HelpKINode Title="NetworkConfig.CompareConfig method" Url="html/M_MLAPI_Data_NetworkConfig_CompareConfig.htm" />
<HelpKINode Title="NetworkConfig.ConnectAddress field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectAddress.htm" />
<HelpKINode Title="NetworkConfig.ConnectionApproval field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionApproval.htm" />
<HelpKINode Title="NetworkConfig.ConnectionData field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionData.htm" />
<HelpKINode Title="NetworkConfig.ConnectPort field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectPort.htm" />
<HelpKINode Title="NetworkConfig.EnableEncryption field" Url="html/F_MLAPI_Data_NetworkConfig_EnableEncryption.htm" />
<HelpKINode Title="NetworkConfig.EnableSceneSwitching field" Url="html/F_MLAPI_Data_NetworkConfig_EnableSceneSwitching.htm" />
<HelpKINode Title="NetworkConfig.EnableTimeResync field" Url="html/F_MLAPI_Data_NetworkConfig_EnableTimeResync.htm" />
<HelpKINode Title="NetworkConfig.EventTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_EventTickrate.htm" />
<HelpKINode Title="NetworkConfig.GetConfig method" Url="html/M_MLAPI_Data_NetworkConfig_GetConfig.htm" />
<HelpKINode Title="NetworkConfig.HandleObjectSpawning field" Url="html/F_MLAPI_Data_NetworkConfig_HandleObjectSpawning.htm" />
<HelpKINode Title="NetworkConfig.MaxConnections field" Url="html/F_MLAPI_Data_NetworkConfig_MaxConnections.htm" />
<HelpKINode Title="NetworkConfig.MaxReceiveEventsPerTickRate field" Url="html/F_MLAPI_Data_NetworkConfig_MaxReceiveEventsPerTickRate.htm" />
<HelpKINode Title="NetworkConfig.MessageBufferSize field" Url="html/F_MLAPI_Data_NetworkConfig_MessageBufferSize.htm" />
<HelpKINode Title="NetworkConfig.MessageTypes field" Url="html/F_MLAPI_Data_NetworkConfig_MessageTypes.htm" />
<HelpKINode Title="NetworkConfig.NetworkConfig constructor" Url="html/M_MLAPI_Data_NetworkConfig__ctor.htm" />
<HelpKINode Title="NetworkConfig.NetworkedPrefabs field" Url="html/F_MLAPI_Data_NetworkConfig_NetworkedPrefabs.htm" />
<HelpKINode Title="NetworkConfig.ProtocolVersion field" Url="html/F_MLAPI_Data_NetworkConfig_ProtocolVersion.htm" />
<HelpKINode Title="NetworkConfig.ReceiveTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_ReceiveTickrate.htm" />
<HelpKINode Title="NetworkConfig.RegisteredScenes field" Url="html/F_MLAPI_Data_NetworkConfig_RegisteredScenes.htm" />
<HelpKINode Title="NetworkConfig.RSAPrivateKey field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPrivateKey.htm" />
<HelpKINode Title="NetworkConfig.RSAPublicKey field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPublicKey.htm" />
<HelpKINode Title="NetworkConfig.SecondsHistory field" Url="html/F_MLAPI_Data_NetworkConfig_SecondsHistory.htm" />
<HelpKINode Title="NetworkConfig.SendTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_SendTickrate.htm" />
<HelpKINode Title="NetworkConfig.ServerTransports field" Url="html/F_MLAPI_Data_NetworkConfig_ServerTransports.htm" />
<HelpKINode Title="NetworkConfig.SignKeyExchange field" Url="html/F_MLAPI_Data_NetworkConfig_SignKeyExchange.htm" />
<HelpKINode Title="NetworkedAnimator class">
<HelpKINode Title="NetworkedAnimator Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator__ctor.htm" />
@ -175,6 +365,9 @@
</HelpKINode>
<HelpKINode Title="NetworkedBehaviour.DeregisterMessageHandler method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_DeregisterMessageHandler.htm" />
<HelpKINode Title="NetworkedBehaviour.GetNetworkedObject method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_GetNetworkedObject.htm" />
<HelpKINode Title="NetworkedBehaviour.InvokeClientRpc method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeClientRpc.htm" />
<HelpKINode Title="NetworkedBehaviour.InvokeCommand method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeCommand.htm" />
<HelpKINode Title="NetworkedBehaviour.InvokeTargetRpc method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeTargetRpc.htm" />
<HelpKINode Title="NetworkedBehaviour.isClient property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isClient.htm" />
<HelpKINode Title="NetworkedBehaviour.isHost property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isHost.htm" />
<HelpKINode Title="NetworkedBehaviour.isLocalPlayer property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isLocalPlayer.htm" />
@ -239,14 +432,24 @@
<HelpKINode Title="NetworkedObject.isPooledObject property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isPooledObject.htm" />
<HelpKINode Title="NetworkedObject.isSpawned property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isSpawned.htm" />
<HelpKINode Title="NetworkedObject.NetworkedObject constructor" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject__ctor.htm" />
<HelpKINode Title="NetworkedObject.NetworkedPrefabName field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkedPrefabName.htm" />
<HelpKINode Title="NetworkedObject.NetworkId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkId.htm" />
<HelpKINode Title="NetworkedObject.OwnerClientId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_OwnerClientId.htm" />
<HelpKINode Title="NetworkedObject.PoolId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_PoolId.htm" />
<HelpKINode Title="NetworkedObject.RemoveOwnership method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_RemoveOwnership.htm" />
<HelpKINode Title="NetworkedObject.ServerOnly field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_ServerOnly.htm" />
<HelpKINode Title="NetworkedObject.Spawn method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_Spawn.htm" />
<HelpKINode Title="NetworkedObject.SpawnablePrefabIndex property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnablePrefabIndex.htm" />
<HelpKINode Title="NetworkedObject.SpawnWithOwnership method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnWithOwnership.htm" />
<HelpKINode Title="NetworkedPrefab class">
<HelpKINode Title="NetworkedPrefab Class" Url="html/T_MLAPI_Data_NetworkedPrefab.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_NetworkedPrefab__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_NetworkedPrefab.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_NetworkedPrefab.htm" />
</HelpKINode>
<HelpKINode Title="NetworkedPrefab.NetworkedPrefab constructor" Url="html/M_MLAPI_Data_NetworkedPrefab__ctor.htm" />
<HelpKINode Title="NetworkedPrefab.playerPrefab field" Url="html/F_MLAPI_Data_NetworkedPrefab_playerPrefab.htm" />
<HelpKINode Title="NetworkedPrefab.prefab field" Url="html/F_MLAPI_Data_NetworkedPrefab_prefab.htm" />
<HelpKINode Title="NetworkedPrefabName field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkedPrefabName.htm" />
<HelpKINode Title="NetworkedPrefabs field" Url="html/F_MLAPI_Data_NetworkConfig_NetworkedPrefabs.htm" />
<HelpKINode Title="NetworkedTransform class">
<HelpKINode Title="NetworkedTransform Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform__ctor.htm" />
@ -265,43 +468,8 @@
<HelpKINode Title="NetworkedTransform.ProximityRange field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_ProximityRange.htm" />
<HelpKINode Title="NetworkedTransform.SendsPerSecond field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_SendsPerSecond.htm" />
<HelpKINode Title="NetworkedTransform.SnapDistance field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_SnapDistance.htm" />
<HelpKINode Title="networkId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_networkId.htm" />
<HelpKINode Title="NetworkId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkId.htm" />
<HelpKINode Title="NetworkingConfiguration class">
<HelpKINode Title="NetworkingConfiguration Class" Url="html/T_MLAPI_Data_NetworkingConfiguration.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_NetworkingConfiguration__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_NetworkingConfiguration.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_NetworkingConfiguration.htm" />
</HelpKINode>
<HelpKINode Title="NetworkingConfiguration.Address field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Address.htm" />
<HelpKINode Title="NetworkingConfiguration.AllowPassthroughMessages field" Url="html/F_MLAPI_Data_NetworkingConfiguration_AllowPassthroughMessages.htm" />
<HelpKINode Title="NetworkingConfiguration.Channels field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Channels.htm" />
<HelpKINode Title="NetworkingConfiguration.ClientConnectionBufferTimeout field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ClientConnectionBufferTimeout.htm" />
<HelpKINode Title="NetworkingConfiguration.CompareConfig method" Url="html/M_MLAPI_Data_NetworkingConfiguration_CompareConfig.htm" />
<HelpKINode Title="NetworkingConfiguration.ConnectionApproval field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApproval.htm" />
<HelpKINode Title="NetworkingConfiguration.ConnectionApprovalCallback field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApprovalCallback.htm" />
<HelpKINode Title="NetworkingConfiguration.ConnectionData field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionData.htm" />
<HelpKINode Title="NetworkingConfiguration.EnableEncryption field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableEncryption.htm" />
<HelpKINode Title="NetworkingConfiguration.EnableSceneSwitching field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableSceneSwitching.htm" />
<HelpKINode Title="NetworkingConfiguration.EncryptedChannels field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EncryptedChannels.htm" />
<HelpKINode Title="NetworkingConfiguration.EventTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EventTickrate.htm" />
<HelpKINode Title="NetworkingConfiguration.GetConfig method" Url="html/M_MLAPI_Data_NetworkingConfiguration_GetConfig.htm" />
<HelpKINode Title="NetworkingConfiguration.HandleObjectSpawning field" Url="html/F_MLAPI_Data_NetworkingConfiguration_HandleObjectSpawning.htm" />
<HelpKINode Title="NetworkingConfiguration.MaxConnections field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxConnections.htm" />
<HelpKINode Title="NetworkingConfiguration.MaxReceiveEventsPerTickRate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxReceiveEventsPerTickRate.htm" />
<HelpKINode Title="NetworkingConfiguration.MessageBufferSize field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageBufferSize.htm" />
<HelpKINode Title="NetworkingConfiguration.MessageTypes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageTypes.htm" />
<HelpKINode Title="NetworkingConfiguration.NetworkingConfiguration constructor" Url="html/M_MLAPI_Data_NetworkingConfiguration__ctor.htm" />
<HelpKINode Title="NetworkingConfiguration.PassthroughMessageTypes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_PassthroughMessageTypes.htm" />
<HelpKINode Title="NetworkingConfiguration.Port field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Port.htm" />
<HelpKINode Title="NetworkingConfiguration.ProtocolVersion field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ProtocolVersion.htm" />
<HelpKINode Title="NetworkingConfiguration.ReceiveTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ReceiveTickrate.htm" />
<HelpKINode Title="NetworkingConfiguration.RegisteredScenes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RegisteredScenes.htm" />
<HelpKINode Title="NetworkingConfiguration.RSAPrivateKey field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPrivateKey.htm" />
<HelpKINode Title="NetworkingConfiguration.RSAPublicKey field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPublicKey.htm" />
<HelpKINode Title="NetworkingConfiguration.SecondsHistory field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SecondsHistory.htm" />
<HelpKINode Title="NetworkingConfiguration.SendTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SendTickrate.htm" />
<HelpKINode Title="NetworkingConfiguration.SignKeyExchange field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SignKeyExchange.htm" />
<HelpKINode Title="networkId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_networkId.htm" />
<HelpKINode Title="NetworkingManager class">
<HelpKINode Title="NetworkingManager Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager__ctor.htm" />
@ -310,7 +478,7 @@
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm" />
</HelpKINode>
<HelpKINode Title="NetworkingManager.ConnectedClients property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectedClients.htm" />
<HelpKINode Title="NetworkingManager.DefaultPlayerPrefab field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DefaultPlayerPrefab.htm" />
<HelpKINode Title="NetworkingManager.ConnectionApprovalCallback field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectionApprovalCallback.htm" />
<HelpKINode Title="NetworkingManager.DontDestroy field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DontDestroy.htm" />
<HelpKINode Title="NetworkingManager.isClient property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_isClient.htm" />
<HelpKINode Title="NetworkingManager.IsClientConnected property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_IsClientConnected.htm" />
@ -323,10 +491,11 @@
<HelpKINode Title="NetworkingManager.OnClientConnectedCallback field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnClientConnectedCallback.htm" />
<HelpKINode Title="NetworkingManager.OnClientDisconnectCallback field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnClientDisconnectCallback.htm" />
<HelpKINode Title="NetworkingManager.OnServerStarted field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnServerStarted.htm" />
<HelpKINode Title="NetworkingManager.RegenerateRSAKeys field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RegenerateRSAKeys.htm" />
<HelpKINode Title="NetworkingManager.RunInBackground field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RunInBackground.htm" />
<HelpKINode Title="NetworkingManager.singleton property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_singleton.htm" />
<HelpKINode Title="NetworkingManager.SpawnablePrefabs field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_SpawnablePrefabs.htm" />
<HelpKINode Title="NetworkingManager.StartClient method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClient.htm" />
<HelpKINode Title="NetworkingManager.StartClientWebsocket method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClientWebsocket.htm" />
<HelpKINode Title="NetworkingManager.StartHost method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartHost.htm" />
<HelpKINode Title="NetworkingManager.StartServer method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartServer.htm" />
<HelpKINode Title="NetworkingManager.StopClient method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopClient.htm" />
@ -366,27 +535,53 @@
<HelpKINode Title="param3 field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_param3.htm" />
<HelpKINode Title="param4 field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_param4.htm" />
<HelpKINode Title="param5 field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_param5.htm" />
<HelpKINode Title="PassthroughMessageTypes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_PassthroughMessageTypes.htm" />
<HelpKINode Title="Passthrough field" Url="html/F_MLAPI_Data_MessageType_Passthrough.htm" />
<HelpKINode Title="PlayerObject field" Url="html/F_MLAPI_Data_NetworkedClient_PlayerObject.htm" />
<HelpKINode Title="playerPrefab field" Url="html/F_MLAPI_Data_NetworkedPrefab_playerPrefab.htm" />
<HelpKINode Title="PoolId property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_PoolId.htm" />
<HelpKINode Title="Port field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Port.htm" />
<HelpKINode Title="ProtocolVersion field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ProtocolVersion.htm" />
<HelpKINode Title="Port field" Url="html/F_MLAPI_Data_TransportHost_Port.htm" />
<HelpKINode Title="prefab field" Url="html/F_MLAPI_Data_NetworkedPrefab_prefab.htm" />
<HelpKINode Title="ProtocolVersion field" Url="html/F_MLAPI_Data_NetworkConfig_ProtocolVersion.htm" />
<HelpKINode Title="ProximityRange field">
<HelpKINode Title="NetworkedAnimator.ProximityRange Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_ProximityRange.htm" />
<HelpKINode Title="NetworkedNavMeshAgent.ProximityRange Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_ProximityRange.htm" />
<HelpKINode Title="NetworkedTransform.ProximityRange Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_ProximityRange.htm" />
</HelpKINode>
<HelpKINode Title="ReceiveTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ReceiveTickrate.htm" />
<HelpKINode Title="RegisteredScenes field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RegisteredScenes.htm" />
<HelpKINode Title="ReadBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBits.htm" />
<HelpKINode Title="ReadBool method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBool.htm" />
<HelpKINode Title="ReadByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByte.htm" />
<HelpKINode Title="ReadByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByteArray.htm" />
<HelpKINode Title="ReadDouble method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDouble.htm" />
<HelpKINode Title="ReadDoubleArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDoubleArray.htm" />
<HelpKINode Title="ReadFloat method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloat.htm" />
<HelpKINode Title="ReadFloatArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloatArray.htm" />
<HelpKINode Title="ReadInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadInt.htm" />
<HelpKINode Title="ReadIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadIntArray.htm" />
<HelpKINode Title="ReadLong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLong.htm" />
<HelpKINode Title="ReadLongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLongArray.htm" />
<HelpKINode Title="ReadSByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByte.htm" />
<HelpKINode Title="ReadSByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByteArray.htm" />
<HelpKINode Title="ReadShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShort.htm" />
<HelpKINode Title="ReadShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShortArray.htm" />
<HelpKINode Title="ReadString method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadString.htm" />
<HelpKINode Title="ReadUInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUInt.htm" />
<HelpKINode Title="ReadUIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUIntArray.htm" />
<HelpKINode Title="ReadULong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULong.htm" />
<HelpKINode Title="ReadULongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULongArray.htm" />
<HelpKINode Title="ReadUShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShort.htm" />
<HelpKINode Title="ReadUShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShortArray.htm" />
<HelpKINode Title="ReceiveTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_ReceiveTickrate.htm" />
<HelpKINode Title="RegenerateRSAKeys field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RegenerateRSAKeys.htm" />
<HelpKINode Title="RegisteredScenes field" Url="html/F_MLAPI_Data_NetworkConfig_RegisteredScenes.htm" />
<HelpKINode Title="RegisterMessageHandler method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_RegisterMessageHandler.htm" />
<HelpKINode Title="RemoveOwnership method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_RemoveOwnership.htm" />
<HelpKINode Title="ResetParameterOptions method" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_ResetParameterOptions.htm" />
<HelpKINode Title="RSAPrivateKey field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPrivateKey.htm" />
<HelpKINode Title="RSAPublicKey field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPublicKey.htm" />
<HelpKINode Title="RSAPrivateKey field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPrivateKey.htm" />
<HelpKINode Title="RSAPublicKey field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPublicKey.htm" />
<HelpKINode Title="RunInBackground field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RunInBackground.htm" />
<HelpKINode Title="SecondsHistory field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SecondsHistory.htm" />
<HelpKINode Title="SecondsHistory field" Url="html/F_MLAPI_Data_NetworkConfig_SecondsHistory.htm" />
<HelpKINode Title="SendsPerSecond field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_SendsPerSecond.htm" />
<HelpKINode Title="SendTickrate field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SendTickrate.htm" />
<HelpKINode Title="SendTickrate field" Url="html/F_MLAPI_Data_NetworkConfig_SendTickrate.htm" />
<HelpKINode Title="SendToClient method" Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient.htm" />
<HelpKINode Title="SendToClients method" Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients.htm" />
<HelpKINode Title="SendToClientsTarget method" Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget.htm" />
@ -399,25 +594,27 @@
<HelpKINode Title="SendToServerTarget method" Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServerTarget.htm" />
<HelpKINode Title="Serialize(Of T) method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Serialize__1.htm" />
<HelpKINode Title="Serialize&lt;T&gt; method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Serialize__1.htm" />
<HelpKINode Title="ServerOnly field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_ServerOnly.htm" />
<HelpKINode Title="ServerNetId property" Url="html/P_MLAPI_Data_NetId_ServerNetId.htm" />
<HelpKINode Title="ServerTransports field" Url="html/F_MLAPI_Data_NetworkConfig_ServerTransports.htm" />
<HelpKINode Title="SetParameterAutoSend method" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetParameterAutoSend.htm" />
<HelpKINode Title="SetTrigger method" Url="html/Overload_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetTrigger.htm" />
<HelpKINode Title="SignKeyExchange field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SignKeyExchange.htm" />
<HelpKINode Title="SignKeyExchange field" Url="html/F_MLAPI_Data_NetworkConfig_SignKeyExchange.htm" />
<HelpKINode Title="Simulate method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm" />
<HelpKINode Title="SimulationObjects property" Url="html/P_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_SimulationObjects.htm" />
<HelpKINode Title="singleton property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_singleton.htm" />
<HelpKINode Title="SkipPadded method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_SkipPadded.htm" />
<HelpKINode Title="SnapDistance field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_SnapDistance.htm" />
<HelpKINode Title="Spawn method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_Spawn.htm" />
<HelpKINode Title="SpawnablePrefabIndex property" Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnablePrefabIndex.htm" />
<HelpKINode Title="SpawnablePrefabs field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_SpawnablePrefabs.htm" />
<HelpKINode Title="SpawnPoolObject method" Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_SpawnPoolObject.htm" />
<HelpKINode Title="SpawnWithOwnership method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnWithOwnership.htm" />
<HelpKINode Title="StartClient method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClient.htm" />
<HelpKINode Title="StartClientWebsocket method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClientWebsocket.htm" />
<HelpKINode Title="StartHost method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartHost.htm" />
<HelpKINode Title="StartServer method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartServer.htm" />
<HelpKINode Title="StopClient method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopClient.htm" />
<HelpKINode Title="StopHost method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopHost.htm" />
<HelpKINode Title="StopServer method" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopServer.htm" />
<HelpKINode Title="SwapEndian method" Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers_SwapEndian.htm" />
<HelpKINode Title="SwitchScene method" Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager_SwitchScene.htm" />
<HelpKINode Title="SyncedVar class">
<HelpKINode Title="SyncedVar Class" Url="html/T_MLAPI_Attributes_SyncedVar.htm" />
@ -426,15 +623,63 @@
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Attributes_SyncedVar.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_Attributes_SyncedVar.htm" />
</HelpKINode>
<HelpKINode Title="SyncedVar.hook field" Url="html/F_MLAPI_Attributes_SyncedVar_hook.htm" />
<HelpKINode Title="SyncedVar.hookMethodName field" Url="html/F_MLAPI_Attributes_SyncedVar_hookMethodName.htm" />
<HelpKINode Title="SyncedVar.SyncedVar constructor" Url="html/M_MLAPI_Attributes_SyncedVar__ctor.htm" />
<HelpKINode Title="SyncedVar.target field" Url="html/F_MLAPI_Attributes_SyncedVar_target.htm" />
<HelpKINode Title="SyncVarSyncDelay field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SyncVarSyncDelay.htm" />
<HelpKINode Title="target field" Url="html/F_MLAPI_Attributes_SyncedVar_target.htm" />
<HelpKINode Title="TargetRpc class">
<HelpKINode Title="TargetRpc Class" Url="html/T_MLAPI_Attributes_TargetRpc.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Attributes_TargetRpc__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Attributes_TargetRpc.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_Attributes_TargetRpc.htm" />
</HelpKINode>
<HelpKINode Title="TargetRpc.TargetRpc constructor" Url="html/M_MLAPI_Attributes_TargetRpc__ctor.htm" />
<HelpKINode Title="TotalPoints property" Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_TotalPoints.htm" />
<HelpKINode Title="TrackedObject class">
<HelpKINode Title="TrackedObject Class" Url="html/T_MLAPI_MonoBehaviours_Core_TrackedObject.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_MonoBehaviours_Core_TrackedObject__ctor.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_TrackedObject.htm" />
<HelpKINode Title="properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_TrackedObject.htm" />
</HelpKINode>
<HelpKINode Title="TrackedObject.AvgTimeBetweenPointsMs property" Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_AvgTimeBetweenPointsMs.htm" />
<HelpKINode Title="TrackedObject.TotalPoints property" Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_TotalPoints.htm" />
<HelpKINode Title="TrackedObject.TrackedObject constructor" Url="html/M_MLAPI_MonoBehaviours_Core_TrackedObject__ctor.htm" />
<HelpKINode Title="TransportHost class">
<HelpKINode Title="TransportHost Class" Url="html/T_MLAPI_Data_TransportHost.htm" />
<HelpKINode Title="constructor" Url="html/M_MLAPI_Data_TransportHost__ctor.htm" />
<HelpKINode Title="fields" Url="html/Fields_T_MLAPI_Data_TransportHost.htm" />
<HelpKINode Title="methods" Url="html/Methods_T_MLAPI_Data_TransportHost.htm" />
</HelpKINode>
<HelpKINode Title="TransportHost.Name field" Url="html/F_MLAPI_Data_TransportHost_Name.htm" />
<HelpKINode Title="TransportHost.Port field" Url="html/F_MLAPI_Data_TransportHost_Port.htm" />
<HelpKINode Title="TransportHost.TransportHost constructor" Url="html/M_MLAPI_Data_TransportHost__ctor.htm" />
<HelpKINode Title="TransportHost.Websockets field" Url="html/F_MLAPI_Data_TransportHost_Websockets.htm" />
<HelpKINode Title="Type field" Url="html/F_MLAPI_Data_Channel_Type.htm" />
<HelpKINode Title="WarpOnDestinationChange field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_WarpOnDestinationChange.htm" />
<HelpKINode Title="Websockets field" Url="html/F_MLAPI_Data_TransportHost_Websockets.htm" />
<HelpKINode Title="WriteAlignBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteAlignBits.htm" />
<HelpKINode Title="WriteBits method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBits.htm" />
<HelpKINode Title="WriteBool method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBool.htm" />
<HelpKINode Title="WriteByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByte.htm" />
<HelpKINode Title="WriteByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByteArray.htm" />
<HelpKINode Title="WriteDouble method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDouble.htm" />
<HelpKINode Title="WriteDoubleArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDoubleArray.htm" />
<HelpKINode Title="WriteFloat method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloat.htm" />
<HelpKINode Title="WriteFloatArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloatArray.htm" />
<HelpKINode Title="WriteInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteInt.htm" />
<HelpKINode Title="WriteIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteIntArray.htm" />
<HelpKINode Title="WriteLong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLong.htm" />
<HelpKINode Title="WriteLongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLongArray.htm" />
<HelpKINode Title="WriteSByte method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByte.htm" />
<HelpKINode Title="WriteSByteArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByteArray.htm" />
<HelpKINode Title="WriteShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShort.htm" />
<HelpKINode Title="WriteShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShortArray.htm" />
<HelpKINode Title="WriteString method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteString.htm" />
<HelpKINode Title="WriteUInt method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUInt.htm" />
<HelpKINode Title="WriteUIntArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUIntArray.htm" />
<HelpKINode Title="WriteULong method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULong.htm" />
<HelpKINode Title="WriteULongArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULongArray.htm" />
<HelpKINode Title="WriteUShort method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShort.htm" />
<HelpKINode Title="WriteUShortArray method" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShortArray.htm" />
</HelpKI>

View File

@ -1,72 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<HelpTOC>
<HelpTOCNode Id="7c620544-924a-43f4-97d0-8d8a81e066e7" Title="MLAPI.Attributes" Url="html/N_MLAPI_Attributes.htm">
<HelpTOCNode Id="ddf7d6e9-e0b2-4402-8111-bea30a63b850" Title="BinaryIgnore Class" Url="html/T_MLAPI_Attributes_BinaryIgnore.htm">
<HelpTOCNode Id="0161c0c0-46c3-4819-8b9d-7a30af9c27d5" Title="MLAPI.Attributes" Url="html/N_MLAPI_Attributes.htm">
<HelpTOCNode Id="10581d5e-88f9-4495-8ec9-72386cc2f33f" Title="BinaryIgnore Class" Url="html/T_MLAPI_Attributes_BinaryIgnore.htm">
<HelpTOCNode Title="BinaryIgnore Constructor " Url="html/M_MLAPI_Attributes_BinaryIgnore__ctor.htm" />
<HelpTOCNode Title="BinaryIgnore Properties" Url="html/Properties_T_MLAPI_Attributes_BinaryIgnore.htm" />
<HelpTOCNode Title="BinaryIgnore Methods" Url="html/Methods_T_MLAPI_Attributes_BinaryIgnore.htm" />
</HelpTOCNode>
<HelpTOCNode Id="6591a837-2ee9-4ce1-937f-5d98ea233268" Title="SyncedVar Class" Url="html/T_MLAPI_Attributes_SyncedVar.htm">
<HelpTOCNode Id="362876d1-3be5-445f-bf46-037ad7411fcf" Title="ClientRpc Class" Url="html/T_MLAPI_Attributes_ClientRpc.htm">
<HelpTOCNode Title="ClientRpc Constructor " Url="html/M_MLAPI_Attributes_ClientRpc__ctor.htm" />
<HelpTOCNode Title="ClientRpc Properties" Url="html/Properties_T_MLAPI_Attributes_ClientRpc.htm" />
<HelpTOCNode Title="ClientRpc Methods" Url="html/Methods_T_MLAPI_Attributes_ClientRpc.htm" />
</HelpTOCNode>
<HelpTOCNode Id="fb4cdb9f-e3f0-4d07-b4f4-699c14f48b22" Title="Command Class" Url="html/T_MLAPI_Attributes_Command.htm">
<HelpTOCNode Title="Command Constructor " Url="html/M_MLAPI_Attributes_Command__ctor.htm" />
<HelpTOCNode Title="Command Properties" Url="html/Properties_T_MLAPI_Attributes_Command.htm" />
<HelpTOCNode Title="Command Methods" Url="html/Methods_T_MLAPI_Attributes_Command.htm" />
</HelpTOCNode>
<HelpTOCNode Id="a9ad7120-12b1-4193-8bf3-8aac24651aa4" Title="SyncedVar Class" Url="html/T_MLAPI_Attributes_SyncedVar.htm">
<HelpTOCNode Title="SyncedVar Constructor " Url="html/M_MLAPI_Attributes_SyncedVar__ctor.htm" />
<HelpTOCNode Title="SyncedVar Properties" Url="html/Properties_T_MLAPI_Attributes_SyncedVar.htm" />
<HelpTOCNode Title="SyncedVar Methods" Url="html/Methods_T_MLAPI_Attributes_SyncedVar.htm" />
<HelpTOCNode Id="6795530b-5ba8-4eb9-9469-9b2d1b3ad7a4" Title="SyncedVar Fields" Url="html/Fields_T_MLAPI_Attributes_SyncedVar.htm">
<HelpTOCNode Title="hook Field" Url="html/F_MLAPI_Attributes_SyncedVar_hook.htm" />
<HelpTOCNode Id="58ef3cb5-9bcd-409c-a6c9-82a07bea7034" Title="SyncedVar Fields" Url="html/Fields_T_MLAPI_Attributes_SyncedVar.htm">
<HelpTOCNode Title="hookMethodName Field" Url="html/F_MLAPI_Attributes_SyncedVar_hookMethodName.htm" />
<HelpTOCNode Title="target Field" Url="html/F_MLAPI_Attributes_SyncedVar_target.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="d0b66898-c8cd-4d44-9f18-1a9382a82779" Title="TargetRpc Class" Url="html/T_MLAPI_Attributes_TargetRpc.htm">
<HelpTOCNode Title="TargetRpc Constructor " Url="html/M_MLAPI_Attributes_TargetRpc__ctor.htm" />
<HelpTOCNode Title="TargetRpc Properties" Url="html/Properties_T_MLAPI_Attributes_TargetRpc.htm" />
<HelpTOCNode Title="TargetRpc Methods" Url="html/Methods_T_MLAPI_Attributes_TargetRpc.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="e839f92a-eac1-46a0-80ac-a59cb45c2560" Title="MLAPI.Data" Url="html/N_MLAPI_Data.htm">
<HelpTOCNode Id="30a70937-ca46-44c5-aa2d-69ad3a29874e" Title="NetworkedClient Class" Url="html/T_MLAPI_Data_NetworkedClient.htm">
<HelpTOCNode Id="e63d4c1c-5f5c-462d-b54b-e517ffd2bda1" Title="MLAPI.Data" Url="html/N_MLAPI_Data.htm">
<HelpTOCNode Id="0c676ff1-4a8b-4feb-916e-a5be3d64a202" Title="Channel Class" Url="html/T_MLAPI_Data_Channel.htm">
<HelpTOCNode Title="Channel Constructor " Url="html/M_MLAPI_Data_Channel__ctor.htm" />
<HelpTOCNode Title="Channel Methods" Url="html/Methods_T_MLAPI_Data_Channel.htm" />
<HelpTOCNode Id="6bc7bec7-e47b-4e67-88e0-f764bb9aa61e" Title="Channel Fields" Url="html/Fields_T_MLAPI_Data_Channel.htm">
<HelpTOCNode Title="Encrypted Field" Url="html/F_MLAPI_Data_Channel_Encrypted.htm" />
<HelpTOCNode Title="Name Field" Url="html/F_MLAPI_Data_Channel_Name.htm" />
<HelpTOCNode Title="Type Field" Url="html/F_MLAPI_Data_Channel_Type.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="87ef9f6c-f08f-493f-a940-1d78bb05757a" Title="MessageType Class" Url="html/T_MLAPI_Data_MessageType.htm">
<HelpTOCNode Title="MessageType Constructor " Url="html/M_MLAPI_Data_MessageType__ctor.htm" />
<HelpTOCNode Title="MessageType Methods" Url="html/Methods_T_MLAPI_Data_MessageType.htm" />
<HelpTOCNode Id="e0a979ec-a3c6-4908-97db-8b4c58340c0c" Title="MessageType Fields" Url="html/Fields_T_MLAPI_Data_MessageType.htm">
<HelpTOCNode Title="Name Field" Url="html/F_MLAPI_Data_MessageType_Name.htm" />
<HelpTOCNode Title="Passthrough Field" Url="html/F_MLAPI_Data_MessageType_Passthrough.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="151e085c-a440-4335-96f7-93dd8ddfb1a2" Title="NetId Structure" Url="html/T_MLAPI_Data_NetId.htm">
<HelpTOCNode Id="8e021207-0e6b-48e1-829e-753fbce76208" Title="NetId Constructor " Url="html/Overload_MLAPI_Data_NetId__ctor.htm">
<HelpTOCNode Title="NetId Constructor (UInt32)" Url="html/M_MLAPI_Data_NetId__ctor_1.htm" />
<HelpTOCNode Title="NetId Constructor (Byte, UInt16, Boolean, Boolean)" Url="html/M_MLAPI_Data_NetId__ctor.htm" />
</HelpTOCNode>
<HelpTOCNode Id="f79698ce-0b9b-4e33-a40d-494887d53be9" Title="NetId Properties" Url="html/Properties_T_MLAPI_Data_NetId.htm">
<HelpTOCNode Title="ServerNetId Property " Url="html/P_MLAPI_Data_NetId_ServerNetId.htm" />
</HelpTOCNode>
<HelpTOCNode Id="7219b61b-7923-492e-bf04-ddb743c7c84f" Title="NetId Methods" Url="html/Methods_T_MLAPI_Data_NetId.htm">
<HelpTOCNode Title="Equals Method " Url="html/M_MLAPI_Data_NetId_Equals.htm" />
<HelpTOCNode Title="GetClientId Method " Url="html/M_MLAPI_Data_NetId_GetClientId.htm" />
<HelpTOCNode Title="GetHashCode Method " Url="html/M_MLAPI_Data_NetId_GetHashCode.htm" />
<HelpTOCNode Title="IsHost Method " Url="html/M_MLAPI_Data_NetId_IsHost.htm" />
<HelpTOCNode Title="IsInvalid Method " Url="html/M_MLAPI_Data_NetId_IsInvalid.htm" />
</HelpTOCNode>
<HelpTOCNode Id="ef58468d-e021-4c5e-9ff2-ba059f86a2f4" Title="NetId Operators" Url="html/Operators_T_MLAPI_Data_NetId.htm">
<HelpTOCNode Title="Equality Operator " Url="html/M_MLAPI_Data_NetId_op_Equality.htm" />
<HelpTOCNode Title="Inequality Operator " Url="html/M_MLAPI_Data_NetId_op_Inequality.htm" />
</HelpTOCNode>
<HelpTOCNode Id="66157c1e-5253-466d-a34d-9386d2ffe13d" Title="NetId Fields" Url="html/Fields_T_MLAPI_Data_NetId.htm">
<HelpTOCNode Title="ConnectionId Field" Url="html/F_MLAPI_Data_NetId_ConnectionId.htm" />
<HelpTOCNode Title="HostId Field" Url="html/F_MLAPI_Data_NetId_HostId.htm" />
<HelpTOCNode Title="Meta Field" Url="html/F_MLAPI_Data_NetId_Meta.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="74dc2563-2661-4d72-87ae-b7b2bbd4154b" Title="NetworkConfig Class" Url="html/T_MLAPI_Data_NetworkConfig.htm">
<HelpTOCNode Title="NetworkConfig Constructor " Url="html/M_MLAPI_Data_NetworkConfig__ctor.htm" />
<HelpTOCNode Id="9ea30dfb-4279-4e57-a408-79ff4833000c" Title="NetworkConfig Methods" Url="html/Methods_T_MLAPI_Data_NetworkConfig.htm">
<HelpTOCNode Title="CompareConfig Method " Url="html/M_MLAPI_Data_NetworkConfig_CompareConfig.htm" />
<HelpTOCNode Title="GetConfig Method " Url="html/M_MLAPI_Data_NetworkConfig_GetConfig.htm" />
</HelpTOCNode>
<HelpTOCNode Id="3292384e-7fd1-46d7-af47-c36af240943c" Title="NetworkConfig Fields" Url="html/Fields_T_MLAPI_Data_NetworkConfig.htm">
<HelpTOCNode Title="AllowPassthroughMessages Field" Url="html/F_MLAPI_Data_NetworkConfig_AllowPassthroughMessages.htm" />
<HelpTOCNode Title="Channels Field" Url="html/F_MLAPI_Data_NetworkConfig_Channels.htm" />
<HelpTOCNode Title="ClientConnectionBufferTimeout Field" Url="html/F_MLAPI_Data_NetworkConfig_ClientConnectionBufferTimeout.htm" />
<HelpTOCNode Title="ConnectAddress Field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectAddress.htm" />
<HelpTOCNode Title="ConnectionApproval Field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionApproval.htm" />
<HelpTOCNode Title="ConnectionData Field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectionData.htm" />
<HelpTOCNode Title="ConnectPort Field" Url="html/F_MLAPI_Data_NetworkConfig_ConnectPort.htm" />
<HelpTOCNode Title="EnableEncryption Field" Url="html/F_MLAPI_Data_NetworkConfig_EnableEncryption.htm" />
<HelpTOCNode Title="EnableSceneSwitching Field" Url="html/F_MLAPI_Data_NetworkConfig_EnableSceneSwitching.htm" />
<HelpTOCNode Title="EnableTimeResync Field" Url="html/F_MLAPI_Data_NetworkConfig_EnableTimeResync.htm" />
<HelpTOCNode Title="EventTickrate Field" Url="html/F_MLAPI_Data_NetworkConfig_EventTickrate.htm" />
<HelpTOCNode Title="HandleObjectSpawning Field" Url="html/F_MLAPI_Data_NetworkConfig_HandleObjectSpawning.htm" />
<HelpTOCNode Title="MaxConnections Field" Url="html/F_MLAPI_Data_NetworkConfig_MaxConnections.htm" />
<HelpTOCNode Title="MaxReceiveEventsPerTickRate Field" Url="html/F_MLAPI_Data_NetworkConfig_MaxReceiveEventsPerTickRate.htm" />
<HelpTOCNode Title="MessageBufferSize Field" Url="html/F_MLAPI_Data_NetworkConfig_MessageBufferSize.htm" />
<HelpTOCNode Title="MessageTypes Field" Url="html/F_MLAPI_Data_NetworkConfig_MessageTypes.htm" />
<HelpTOCNode Title="NetworkedPrefabs Field" Url="html/F_MLAPI_Data_NetworkConfig_NetworkedPrefabs.htm" />
<HelpTOCNode Title="ProtocolVersion Field" Url="html/F_MLAPI_Data_NetworkConfig_ProtocolVersion.htm" />
<HelpTOCNode Title="ReceiveTickrate Field" Url="html/F_MLAPI_Data_NetworkConfig_ReceiveTickrate.htm" />
<HelpTOCNode Title="RegisteredScenes Field" Url="html/F_MLAPI_Data_NetworkConfig_RegisteredScenes.htm" />
<HelpTOCNode Title="RSAPrivateKey Field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPrivateKey.htm" />
<HelpTOCNode Title="RSAPublicKey Field" Url="html/F_MLAPI_Data_NetworkConfig_RSAPublicKey.htm" />
<HelpTOCNode Title="SecondsHistory Field" Url="html/F_MLAPI_Data_NetworkConfig_SecondsHistory.htm" />
<HelpTOCNode Title="SendTickrate Field" Url="html/F_MLAPI_Data_NetworkConfig_SendTickrate.htm" />
<HelpTOCNode Title="ServerTransports Field" Url="html/F_MLAPI_Data_NetworkConfig_ServerTransports.htm" />
<HelpTOCNode Title="SignKeyExchange Field" Url="html/F_MLAPI_Data_NetworkConfig_SignKeyExchange.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="f72761d2-701a-473c-8655-d48e95a49004" Title="NetworkedClient Class" Url="html/T_MLAPI_Data_NetworkedClient.htm">
<HelpTOCNode Title="NetworkedClient Constructor " Url="html/M_MLAPI_Data_NetworkedClient__ctor.htm" />
<HelpTOCNode Title="NetworkedClient Methods" Url="html/Methods_T_MLAPI_Data_NetworkedClient.htm" />
<HelpTOCNode Id="99cea467-056d-43c5-85ff-f771f14ba209" Title="NetworkedClient Fields" Url="html/Fields_T_MLAPI_Data_NetworkedClient.htm">
<HelpTOCNode Id="46a9ca1d-a55a-4060-b54f-1a555251c014" Title="NetworkedClient Fields" Url="html/Fields_T_MLAPI_Data_NetworkedClient.htm">
<HelpTOCNode Title="AesKey Field" Url="html/F_MLAPI_Data_NetworkedClient_AesKey.htm" />
<HelpTOCNode Title="ClientId Field" Url="html/F_MLAPI_Data_NetworkedClient_ClientId.htm" />
<HelpTOCNode Title="OwnedObjects Field" Url="html/F_MLAPI_Data_NetworkedClient_OwnedObjects.htm" />
<HelpTOCNode Title="PlayerObject Field" Url="html/F_MLAPI_Data_NetworkedClient_PlayerObject.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="62674246-107d-4c3c-9488-9417ef5c3f98" Title="NetworkingConfiguration Class" Url="html/T_MLAPI_Data_NetworkingConfiguration.htm">
<HelpTOCNode Title="NetworkingConfiguration Constructor " Url="html/M_MLAPI_Data_NetworkingConfiguration__ctor.htm" />
<HelpTOCNode Id="eac18f7b-b8a7-4176-a22c-b42a21cc0cd9" Title="NetworkingConfiguration Methods" Url="html/Methods_T_MLAPI_Data_NetworkingConfiguration.htm">
<HelpTOCNode Title="CompareConfig Method " Url="html/M_MLAPI_Data_NetworkingConfiguration_CompareConfig.htm" />
<HelpTOCNode Title="GetConfig Method " Url="html/M_MLAPI_Data_NetworkingConfiguration_GetConfig.htm" />
<HelpTOCNode Id="40dfa748-6eb6-4ceb-ac4c-556ffe4e5dd6" Title="NetworkedPrefab Class" Url="html/T_MLAPI_Data_NetworkedPrefab.htm">
<HelpTOCNode Title="NetworkedPrefab Constructor " Url="html/M_MLAPI_Data_NetworkedPrefab__ctor.htm" />
<HelpTOCNode Title="NetworkedPrefab Methods" Url="html/Methods_T_MLAPI_Data_NetworkedPrefab.htm" />
<HelpTOCNode Id="a3e6b48a-5477-4732-bafb-d916f66cff04" Title="NetworkedPrefab Fields" Url="html/Fields_T_MLAPI_Data_NetworkedPrefab.htm">
<HelpTOCNode Title="playerPrefab Field" Url="html/F_MLAPI_Data_NetworkedPrefab_playerPrefab.htm" />
<HelpTOCNode Title="prefab Field" Url="html/F_MLAPI_Data_NetworkedPrefab_prefab.htm" />
</HelpTOCNode>
<HelpTOCNode Id="569b276c-6667-491a-a3b3-36275735d419" Title="NetworkingConfiguration Fields" Url="html/Fields_T_MLAPI_Data_NetworkingConfiguration.htm">
<HelpTOCNode Title="Address Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Address.htm" />
<HelpTOCNode Title="AllowPassthroughMessages Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_AllowPassthroughMessages.htm" />
<HelpTOCNode Title="Channels Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Channels.htm" />
<HelpTOCNode Title="ClientConnectionBufferTimeout Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ClientConnectionBufferTimeout.htm" />
<HelpTOCNode Title="ConnectionApproval Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApproval.htm" />
<HelpTOCNode Title="ConnectionApprovalCallback Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionApprovalCallback.htm" />
<HelpTOCNode Title="ConnectionData Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ConnectionData.htm" />
<HelpTOCNode Title="EnableEncryption Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableEncryption.htm" />
<HelpTOCNode Title="EnableSceneSwitching Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EnableSceneSwitching.htm" />
<HelpTOCNode Title="EncryptedChannels Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EncryptedChannels.htm" />
<HelpTOCNode Title="EventTickrate Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_EventTickrate.htm" />
<HelpTOCNode Title="HandleObjectSpawning Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_HandleObjectSpawning.htm" />
<HelpTOCNode Title="MaxConnections Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxConnections.htm" />
<HelpTOCNode Title="MaxReceiveEventsPerTickRate Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MaxReceiveEventsPerTickRate.htm" />
<HelpTOCNode Title="MessageBufferSize Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageBufferSize.htm" />
<HelpTOCNode Title="MessageTypes Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_MessageTypes.htm" />
<HelpTOCNode Title="PassthroughMessageTypes Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_PassthroughMessageTypes.htm" />
<HelpTOCNode Title="Port Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_Port.htm" />
<HelpTOCNode Title="ProtocolVersion Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ProtocolVersion.htm" />
<HelpTOCNode Title="ReceiveTickrate Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_ReceiveTickrate.htm" />
<HelpTOCNode Title="RegisteredScenes Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RegisteredScenes.htm" />
<HelpTOCNode Title="RSAPrivateKey Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPrivateKey.htm" />
<HelpTOCNode Title="RSAPublicKey Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_RSAPublicKey.htm" />
<HelpTOCNode Title="SecondsHistory Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SecondsHistory.htm" />
<HelpTOCNode Title="SendTickrate Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SendTickrate.htm" />
<HelpTOCNode Title="SignKeyExchange Field" Url="html/F_MLAPI_Data_NetworkingConfiguration_SignKeyExchange.htm" />
</HelpTOCNode>
<HelpTOCNode Id="bb42c23a-5480-47cd-b714-07679ad7894b" Title="TransportHost Class" Url="html/T_MLAPI_Data_TransportHost.htm">
<HelpTOCNode Title="TransportHost Constructor " Url="html/M_MLAPI_Data_TransportHost__ctor.htm" />
<HelpTOCNode Title="TransportHost Methods" Url="html/Methods_T_MLAPI_Data_TransportHost.htm" />
<HelpTOCNode Id="0c8aa163-7b7e-48d1-9425-70c83a81f13b" Title="TransportHost Fields" Url="html/Fields_T_MLAPI_Data_TransportHost.htm">
<HelpTOCNode Title="Name Field" Url="html/F_MLAPI_Data_TransportHost_Name.htm" />
<HelpTOCNode Title="Port Field" Url="html/F_MLAPI_Data_TransportHost_Port.htm" />
<HelpTOCNode Title="Websockets Field" Url="html/F_MLAPI_Data_TransportHost_Websockets.htm" />
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="da9cc9bb-85b1-4ca3-b0e2-37c2b5cd02d1" Title="MLAPI.MonoBehaviours.Core" Url="html/N_MLAPI_MonoBehaviours_Core.htm">
<HelpTOCNode Id="37a1f473-7977-4b27-b216-f7f6908aa06e" Title="NetworkedBehaviour Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Id="2b78a972-4df2-4dfa-912e-c250ded047ab" Title="MLAPI.MonoBehaviours.Core" Url="html/N_MLAPI_MonoBehaviours_Core.htm">
<HelpTOCNode Id="a7378dfd-d06a-437d-9a68-c834c90ec934" Title="NetworkedBehaviour Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Title="NetworkedBehaviour Constructor " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour__ctor.htm" />
<HelpTOCNode Id="1c17b74e-1733-4950-8a55-122c0fd84a91" Title="NetworkedBehaviour Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Id="fec3295c-94e5-44f6-973a-5529ec7c96c2" Title="NetworkedBehaviour Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Title="isClient Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isClient.htm" />
<HelpTOCNode Title="isHost Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isHost.htm" />
<HelpTOCNode Title="isLocalPlayer Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_isLocalPlayer.htm" />
@ -76,69 +151,72 @@
<HelpTOCNode Title="networkId Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_networkId.htm" />
<HelpTOCNode Title="ownerClientId Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_ownerClientId.htm" />
</HelpTOCNode>
<HelpTOCNode Id="ec5ba87b-94b4-4faa-ba86-ce8541472b77" Title="NetworkedBehaviour Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Id="fc2206d6-a21a-4e90-b34c-d9302252c4e5" Title="NetworkedBehaviour Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Title="DeregisterMessageHandler Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_DeregisterMessageHandler.htm" />
<HelpTOCNode Title="GetNetworkedObject Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_GetNetworkedObject.htm" />
<HelpTOCNode Title="InvokeClientRpc Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeClientRpc.htm" />
<HelpTOCNode Title="InvokeCommand Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeCommand.htm" />
<HelpTOCNode Title="InvokeTargetRpc Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_InvokeTargetRpc.htm" />
<HelpTOCNode Title="NetworkStart Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_NetworkStart.htm" />
<HelpTOCNode Title="OnGainedOwnership Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_OnGainedOwnership.htm" />
<HelpTOCNode Title="OnLostOwnership Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_OnLostOwnership.htm" />
<HelpTOCNode Title="RegisterMessageHandler Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_RegisterMessageHandler.htm" />
<HelpTOCNode Id="e10c87cd-d0ae-496d-bb9a-f011ab6e1a8f" Title="SendToClient Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient.htm">
<HelpTOCNode Title="SendToClient Method (Int32, String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient.htm" />
<HelpTOCNode Id="75420319-ea50-4d92-9480-00f81fc95132" Title="SendToClient Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient.htm">
<HelpTOCNode Title="SendToClient(T) Method (Int32, String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient__1.htm" />
<HelpTOCNode Title="SendToClient Method (UInt32, String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClient.htm" />
</HelpTOCNode>
<HelpTOCNode Id="e0cb6da5-1f42-44de-84dc-4415ef190bd3" Title="SendToClients Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients.htm">
<HelpTOCNode Title="SendToClients Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients_2.htm" />
<HelpTOCNode Id="1a760020-66e7-4ffe-9350-401d26ccb05e" Title="SendToClients Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients.htm">
<HelpTOCNode Title="SendToClients Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients_1.htm" />
<HelpTOCNode Title="SendToClients(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients__1_2.htm" />
<HelpTOCNode Title="SendToClients Method (List(Int32), String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients.htm" />
<HelpTOCNode Title="SendToClients(T) Method (List(Int32), String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients__1.htm" />
<HelpTOCNode Title="SendToClients Method (Int32[], String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients_1.htm" />
<HelpTOCNode Title="SendToClients Method (List(UInt32), String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients.htm" />
<HelpTOCNode Title="SendToClients(T) Method (Int32[], String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients__1_1.htm" />
<HelpTOCNode Title="SendToClients Method (UInt32[], String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClients_2.htm" />
</HelpTOCNode>
<HelpTOCNode Id="4b047b2a-104c-408c-8e6a-0e2a7894bd0a" Title="SendToClientsTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget.htm">
<HelpTOCNode Title="SendToClientsTarget Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget_2.htm" />
<HelpTOCNode Id="7954a49a-f2ce-4ab1-9286-564a22825290" Title="SendToClientsTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget.htm">
<HelpTOCNode Title="SendToClientsTarget Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget_1.htm" />
<HelpTOCNode Title="SendToClientsTarget(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget__1_2.htm" />
<HelpTOCNode Title="SendToClientsTarget Method (List(Int32), String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget.htm" />
<HelpTOCNode Title="SendToClientsTarget(T) Method (List(Int32), String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget__1.htm" />
<HelpTOCNode Title="SendToClientsTarget Method (Int32[], String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget_1.htm" />
<HelpTOCNode Title="SendToClientsTarget Method (List(UInt32), String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget.htm" />
<HelpTOCNode Title="SendToClientsTarget(T) Method (List(UInt32), String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget__1.htm" />
<HelpTOCNode Title="SendToClientsTarget(T) Method (Int32[], String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget__1_1.htm" />
<HelpTOCNode Title="SendToClientsTarget Method (UInt32[], String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientsTarget_2.htm" />
</HelpTOCNode>
<HelpTOCNode Id="1a68086f-f987-4a6b-af2b-77d0826ef55b" Title="SendToClientTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientTarget.htm">
<HelpTOCNode Title="SendToClientTarget Method (Int32, String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientTarget.htm" />
<HelpTOCNode Id="f02d3c1a-622f-41d9-8ff9-df63e36f3503" Title="SendToClientTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientTarget.htm">
<HelpTOCNode Title="SendToClientTarget(T) Method (Int32, String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientTarget__1.htm" />
<HelpTOCNode Title="SendToClientTarget Method (UInt32, String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToClientTarget.htm" />
</HelpTOCNode>
<HelpTOCNode Id="8205cbbe-c0a3-4c5a-9b2f-23249fafca0c" Title="SendToLocalClient Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClient.htm">
<HelpTOCNode Id="d5649bd9-a344-4e6b-a1bb-c9ee2e080fde" Title="SendToLocalClient Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClient.htm">
<HelpTOCNode Title="SendToLocalClient Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClient.htm" />
<HelpTOCNode Title="SendToLocalClient(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClient__1.htm" />
</HelpTOCNode>
<HelpTOCNode Id="2fc1660f-f382-4427-9aa9-219462a9bc70" Title="SendToLocalClientTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClientTarget.htm">
<HelpTOCNode Id="6284da67-5a20-403a-937e-b6404aaa3259" Title="SendToLocalClientTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClientTarget.htm">
<HelpTOCNode Title="SendToLocalClientTarget Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClientTarget.htm" />
<HelpTOCNode Title="SendToLocalClientTarget(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToLocalClientTarget__1.htm" />
</HelpTOCNode>
<HelpTOCNode Id="acfca73e-811e-4009-b5c0-c1526b0a2ab1" Title="SendToNonLocalClients Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClients.htm">
<HelpTOCNode Id="d57cf1be-d549-488b-9690-3052ea9da814" Title="SendToNonLocalClients Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClients.htm">
<HelpTOCNode Title="SendToNonLocalClients Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClients.htm" />
<HelpTOCNode Title="SendToNonLocalClients(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClients__1.htm" />
</HelpTOCNode>
<HelpTOCNode Id="d695b184-a442-4fd4-8507-bfbaabfc662c" Title="SendToNonLocalClientsTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClientsTarget.htm">
<HelpTOCNode Id="2cdf6dbb-1912-40e1-80f3-daa985c0d5dd" Title="SendToNonLocalClientsTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClientsTarget.htm">
<HelpTOCNode Title="SendToNonLocalClientsTarget Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClientsTarget.htm" />
<HelpTOCNode Title="SendToNonLocalClientsTarget(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToNonLocalClientsTarget__1.htm" />
</HelpTOCNode>
<HelpTOCNode Id="f4438b07-52ca-41d9-aca7-b1937e9d960c" Title="SendToServer Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServer.htm">
<HelpTOCNode Id="c0ebeea4-d36d-4456-a929-6217eac1ab5a" Title="SendToServer Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServer.htm">
<HelpTOCNode Title="SendToServer Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServer.htm" />
<HelpTOCNode Title="SendToServer(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServer__1.htm" />
</HelpTOCNode>
<HelpTOCNode Id="1d44bc9c-07a0-4320-86ad-ebc7170caf4f" Title="SendToServerTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServerTarget.htm">
<HelpTOCNode Id="6e0bf34a-57ea-4d13-a48b-bcb8d4a26ae4" Title="SendToServerTarget Method " Url="html/Overload_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServerTarget.htm">
<HelpTOCNode Title="SendToServerTarget Method (String, String, Byte[])" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServerTarget.htm" />
<HelpTOCNode Title="SendToServerTarget(T) Method (String, String, T)" Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SendToServerTarget__1.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="8b3e5c15-da39-4dca-8d53-fc80062d9552" Title="NetworkedBehaviour Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Id="001c1eb0-91b4-4cc9-99ff-5c814b47f852" Title="NetworkedBehaviour Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkedBehaviour.htm">
<HelpTOCNode Title="SyncVarSyncDelay Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedBehaviour_SyncVarSyncDelay.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="a63ac209-202e-4565-ae0e-5f0edea4a879" Title="NetworkedObject Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Id="73ede72c-67cd-4e3a-a92b-f024864716d0" Title="NetworkedObject Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Title="NetworkedObject Constructor " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject__ctor.htm" />
<HelpTOCNode Id="bdc19fc5-829a-4ab8-9720-be4db9972b5a" Title="NetworkedObject Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Id="0997cab9-ae18-4db6-9a83-1427f3166dbc" Title="NetworkedObject Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Title="isLocalPlayer Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isLocalPlayer.htm" />
<HelpTOCNode Title="isOwner Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isOwner.htm" />
<HelpTOCNode Title="isPlayerObject Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_isPlayerObject.htm" />
@ -147,21 +225,20 @@
<HelpTOCNode Title="NetworkId Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkId.htm" />
<HelpTOCNode Title="OwnerClientId Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_OwnerClientId.htm" />
<HelpTOCNode Title="PoolId Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_PoolId.htm" />
<HelpTOCNode Title="SpawnablePrefabIndex Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnablePrefabIndex.htm" />
</HelpTOCNode>
<HelpTOCNode Id="e5bfca6f-74a9-4135-ae0e-119a79f35a19" Title="NetworkedObject Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Id="9fb4134f-e0a8-409f-90dd-1d2ba32482c5" Title="NetworkedObject Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Title="ChangeOwnership Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_ChangeOwnership.htm" />
<HelpTOCNode Title="RemoveOwnership Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_RemoveOwnership.htm" />
<HelpTOCNode Title="Spawn Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_Spawn.htm" />
<HelpTOCNode Title="SpawnWithOwnership Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkedObject_SpawnWithOwnership.htm" />
</HelpTOCNode>
<HelpTOCNode Id="58947793-826e-4d67-b8ed-481863b8fd39" Title="NetworkedObject Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Title="ServerOnly Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_ServerOnly.htm" />
<HelpTOCNode Id="d964f1f0-0a3b-45f1-86fd-b6a3aac155c7" Title="NetworkedObject Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkedObject.htm">
<HelpTOCNode Title="NetworkedPrefabName Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkedObject_NetworkedPrefabName.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="915f79e6-2d78-4e16-9acd-7f41e2d50a1a" Title="NetworkingManager Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Id="8fe2f9db-3fa9-4c96-aaad-923c33a0b219" Title="NetworkingManager Class" Url="html/T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Title="NetworkingManager Constructor " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager__ctor.htm" />
<HelpTOCNode Id="83bee0fa-4463-475e-8117-e04e2a75d0e6" Title="NetworkingManager Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Id="3a114f27-0ddd-49d3-9289-8e38cbf5cc70" Title="NetworkingManager Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Title="ConnectedClients Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectedClients.htm" />
<HelpTOCNode Title="isClient Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_isClient.htm" />
<HelpTOCNode Title="IsClientConnected Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_IsClientConnected.htm" />
@ -171,48 +248,52 @@
<HelpTOCNode Title="NetworkTime Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_NetworkTime.htm" />
<HelpTOCNode Title="singleton Property " Url="html/P_MLAPI_MonoBehaviours_Core_NetworkingManager_singleton.htm" />
</HelpTOCNode>
<HelpTOCNode Id="f1c9b535-86db-4155-b24a-5a3a340fe83d" Title="NetworkingManager Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Id="75b0a333-495d-4325-919d-d1cae33d24a2" Title="NetworkingManager Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Title="StartClient Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClient.htm" />
<HelpTOCNode Title="StartClientWebsocket Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartClientWebsocket.htm" />
<HelpTOCNode Title="StartHost Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartHost.htm" />
<HelpTOCNode Title="StartServer Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StartServer.htm" />
<HelpTOCNode Title="StopClient Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopClient.htm" />
<HelpTOCNode Title="StopHost Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopHost.htm" />
<HelpTOCNode Title="StopServer Method " Url="html/M_MLAPI_MonoBehaviours_Core_NetworkingManager_StopServer.htm" />
</HelpTOCNode>
<HelpTOCNode Id="26b6709a-4d11-4fc4-9a82-3c432b4cd913" Title="NetworkingManager Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Title="DefaultPlayerPrefab Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DefaultPlayerPrefab.htm" />
<HelpTOCNode Id="f7bf3a6e-6b45-47a2-9806-4a0aa7efb179" Title="NetworkingManager Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Core_NetworkingManager.htm">
<HelpTOCNode Title="ConnectionApprovalCallback Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_ConnectionApprovalCallback.htm" />
<HelpTOCNode Title="DontDestroy Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_DontDestroy.htm" />
<HelpTOCNode Title="NetworkConfig Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_NetworkConfig.htm" />
<HelpTOCNode Title="OnClientConnectedCallback Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnClientConnectedCallback.htm" />
<HelpTOCNode Title="OnClientDisconnectCallback Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnClientDisconnectCallback.htm" />
<HelpTOCNode Title="OnServerStarted Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_OnServerStarted.htm" />
<HelpTOCNode Title="RegenerateRSAKeys Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RegenerateRSAKeys.htm" />
<HelpTOCNode Title="RunInBackground Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_RunInBackground.htm" />
<HelpTOCNode Title="SpawnablePrefabs Field" Url="html/F_MLAPI_MonoBehaviours_Core_NetworkingManager_SpawnablePrefabs.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="8f47dbe5-66ac-48e5-9233-779522790943" Title="TrackedObject Class" Url="html/T_MLAPI_MonoBehaviours_Core_TrackedObject.htm">
<HelpTOCNode Id="ce37a000-186b-4c0d-8fdb-a78cf450c85b" Title="TrackedObject Class" Url="html/T_MLAPI_MonoBehaviours_Core_TrackedObject.htm">
<HelpTOCNode Title="TrackedObject Constructor " Url="html/M_MLAPI_MonoBehaviours_Core_TrackedObject__ctor.htm" />
<HelpTOCNode Title="TrackedObject Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_TrackedObject.htm" />
<HelpTOCNode Id="5f99e0ad-788d-4b2e-ab2a-a46ddf9d408f" Title="TrackedObject Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Core_TrackedObject.htm">
<HelpTOCNode Title="AvgTimeBetweenPointsMs Property " Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_AvgTimeBetweenPointsMs.htm" />
<HelpTOCNode Title="TotalPoints Property " Url="html/P_MLAPI_MonoBehaviours_Core_TrackedObject_TotalPoints.htm" />
</HelpTOCNode>
<HelpTOCNode Title="TrackedObject Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Core_TrackedObject.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="e5db78aa-0a53-44ba-b991-e4e5e6ee6d82" Title="MLAPI.MonoBehaviours.Prototyping" Url="html/N_MLAPI_MonoBehaviours_Prototyping.htm">
<HelpTOCNode Id="7ae94f17-f384-4058-90e0-86a2be98970d" Title="NetworkedAnimator Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Id="46992f5e-f570-40f4-ba78-3b2fe5e318ff" Title="MLAPI.MonoBehaviours.Prototyping" Url="html/N_MLAPI_MonoBehaviours_Prototyping.htm">
<HelpTOCNode Id="608f7234-28e5-41d1-890c-bed7f270c84f" Title="NetworkedAnimator Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Title="NetworkedAnimator Constructor " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator__ctor.htm" />
<HelpTOCNode Id="1f672e2f-08c2-413c-88ec-8e1ec296d843" Title="NetworkedAnimator Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Id="dd0f3f94-6dbb-4420-8f1b-76cc15a19890" Title="NetworkedAnimator Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Title="animator Property " Url="html/P_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_animator.htm" />
</HelpTOCNode>
<HelpTOCNode Id="81589993-6f59-4191-ad0f-84ff316124d5" Title="NetworkedAnimator Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Id="3823ad08-4fdd-40c2-8e31-6e57bbc78955" Title="NetworkedAnimator Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Title="GetParameterAutoSend Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_GetParameterAutoSend.htm" />
<HelpTOCNode Title="NetworkStart Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_NetworkStart.htm" />
<HelpTOCNode Title="ResetParameterOptions Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_ResetParameterOptions.htm" />
<HelpTOCNode Title="SetParameterAutoSend Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetParameterAutoSend.htm" />
<HelpTOCNode Id="714708b0-71a0-4040-82ac-e2699037beb6" Title="SetTrigger Method " Url="html/Overload_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetTrigger.htm">
<HelpTOCNode Id="eb90a014-3cdd-47c4-ab18-e8fac9ee1690" Title="SetTrigger Method " Url="html/Overload_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetTrigger.htm">
<HelpTOCNode Title="SetTrigger Method (Int32)" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetTrigger.htm" />
<HelpTOCNode Title="SetTrigger Method (String)" Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_SetTrigger_1.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="2a2c1e11-a252-4763-8358-fefbba63217f" Title="NetworkedAnimator Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Id="cb332f52-cfac-423d-9bc5-168ce5aa815a" Title="NetworkedAnimator Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator.htm">
<HelpTOCNode Title="EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_EnableProximity.htm" />
<HelpTOCNode Title="param0 Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_param0.htm" />
<HelpTOCNode Title="param1 Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_param1.htm" />
@ -223,13 +304,13 @@
<HelpTOCNode Title="ProximityRange Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedAnimator_ProximityRange.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="64c45f02-a247-4d89-ac41-2ac2c89d814c" Title="NetworkedNavMeshAgent Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Id="4565e34b-5397-4e2a-8c43-13514c26f2da" Title="NetworkedNavMeshAgent Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Title="NetworkedNavMeshAgent Constructor " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent__ctor.htm" />
<HelpTOCNode Title="NetworkedNavMeshAgent Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm" />
<HelpTOCNode Id="0a57ad5b-6eb4-4143-971d-bf0cddfe0066" Title="NetworkedNavMeshAgent Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Id="4e0c30e8-2253-4cf4-b0a9-3301de5b72a2" Title="NetworkedNavMeshAgent Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Title="NetworkStart Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_NetworkStart.htm" />
</HelpTOCNode>
<HelpTOCNode Id="52c0b6c8-b31a-4512-8e04-a683ab909f7d" Title="NetworkedNavMeshAgent Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Id="5ea3a976-2fd7-43a2-9c04-df365272408f" Title="NetworkedNavMeshAgent Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent.htm">
<HelpTOCNode Title="CorrectionDelay Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_CorrectionDelay.htm" />
<HelpTOCNode Title="DriftCorrectionPercentage Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_DriftCorrectionPercentage.htm" />
<HelpTOCNode Title="EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_EnableProximity.htm" />
@ -237,13 +318,13 @@
<HelpTOCNode Title="WarpOnDestinationChange Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedNavMeshAgent_WarpOnDestinationChange.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="69e42996-135d-4eaa-89ea-b3d5906bb02d" Title="NetworkedTransform Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Id="9e9d266b-237e-40bb-88bd-8c7a874a7ecf" Title="NetworkedTransform Class" Url="html/T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Title="NetworkedTransform Constructor " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform__ctor.htm" />
<HelpTOCNode Title="NetworkedTransform Properties" Url="html/Properties_T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm" />
<HelpTOCNode Id="4d76b8be-a5ce-4b66-80d4-c845c5d250dc" Title="NetworkedTransform Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Id="433f25c1-8c0b-41e6-8383-82824025262a" Title="NetworkedTransform Methods" Url="html/Methods_T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Title="NetworkStart Method " Url="html/M_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_NetworkStart.htm" />
</HelpTOCNode>
<HelpTOCNode Id="a5c6724b-ba1f-4c73-9adb-63ea93fb817e" Title="NetworkedTransform Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Id="326c641f-8d2f-4342-a125-b6ddc6b5133b" Title="NetworkedTransform Fields" Url="html/Fields_T_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform.htm">
<HelpTOCNode Title="AssumeSyncedSends Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_AssumeSyncedSends.htm" />
<HelpTOCNode Title="EnableProximity Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_EnableProximity.htm" />
<HelpTOCNode Title="InterpolatePosition Field" Url="html/F_MLAPI_MonoBehaviours_Prototyping_NetworkedTransform_InterpolatePosition.htm" />
@ -256,16 +337,88 @@
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="b7dc15f1-ac0a-440d-92de-851c7e4ccec0" Title="MLAPI.NetworkingManagerComponents.Binary" Url="html/N_MLAPI_NetworkingManagerComponents_Binary.htm">
<HelpTOCNode Id="1cd34ea5-cf58-4bbc-abd3-740aac7f1769" Title="BinarySerializer Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer.htm">
<HelpTOCNode Id="7ddaf4cd-af73-45bb-b769-26d0e1f21c0c" Title="BinarySerializer Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer.htm">
<HelpTOCNode Id="45906398-d599-44f8-a564-00f14f453f42" Title="MLAPI.NetworkingManagerComponents.Binary" Url="html/N_MLAPI_NetworkingManagerComponents_Binary.htm">
<HelpTOCNode Id="d2697f96-631d-4d11-915a-e67e9cac62e9" Title="BinaryHelpers Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers.htm">
<HelpTOCNode Id="e37e74cd-d689-4652-bafc-1f7abd795c57" Title="BinaryHelpers Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers.htm">
<HelpTOCNode Id="55dddd48-9049-4788-873c-4e529464e533" Title="SwapEndian Method " Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers_SwapEndian.htm">
<HelpTOCNode Title="SwapEndian Method (UInt32)" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers_SwapEndian.htm" />
<HelpTOCNode Title="SwapEndian Method (UInt64)" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinaryHelpers_SwapEndian_1.htm" />
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="039e6ae9-2f10-4683-ba54-c3d5138ea63c" Title="BinarySerializer Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer.htm">
<HelpTOCNode Id="990f33f2-70db-4fea-b6cf-6b0ffe3148ae" Title="BinarySerializer Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer.htm">
<HelpTOCNode Title="ClearCache Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_ClearCache.htm" />
<HelpTOCNode Title="Deserialize(T) Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Deserialize__1.htm" />
<HelpTOCNode Title="Serialize(T) Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BinarySerializer_Serialize__1.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="0b939441-3f2c-4cca-bdc9-d6a78e0586d2" Title="MessageChunker Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm">
<HelpTOCNode Id="00f73ea8-126b-4c9e-b916-e86344074cd3" Title="MessageChunker Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm">
<HelpTOCNode Id="2f50c96c-1f99-4875-a1c5-ff7d0ace510a" Title="BitReader Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitReader.htm">
<HelpTOCNode Title="BitReader Constructor " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader__ctor.htm" />
<HelpTOCNode Id="cb8a380d-4dcc-4a68-b078-feb5c23117c6" Title="BitReader Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BitReader.htm">
<HelpTOCNode Title="ReadBits Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBits.htm" />
<HelpTOCNode Title="ReadBool Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadBool.htm" />
<HelpTOCNode Title="ReadByte Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByte.htm" />
<HelpTOCNode Title="ReadByteArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadByteArray.htm" />
<HelpTOCNode Title="ReadDouble Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDouble.htm" />
<HelpTOCNode Title="ReadDoubleArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadDoubleArray.htm" />
<HelpTOCNode Title="ReadFloat Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloat.htm" />
<HelpTOCNode Title="ReadFloatArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadFloatArray.htm" />
<HelpTOCNode Title="ReadInt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadInt.htm" />
<HelpTOCNode Title="ReadIntArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadIntArray.htm" />
<HelpTOCNode Title="ReadLong Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLong.htm" />
<HelpTOCNode Title="ReadLongArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadLongArray.htm" />
<HelpTOCNode Title="ReadSByte Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByte.htm" />
<HelpTOCNode Title="ReadSByteArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadSByteArray.htm" />
<HelpTOCNode Title="ReadShort Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShort.htm" />
<HelpTOCNode Title="ReadShortArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadShortArray.htm" />
<HelpTOCNode Title="ReadString Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadString.htm" />
<HelpTOCNode Title="ReadUInt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUInt.htm" />
<HelpTOCNode Title="ReadUIntArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUIntArray.htm" />
<HelpTOCNode Title="ReadULong Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULong.htm" />
<HelpTOCNode Title="ReadULongArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadULongArray.htm" />
<HelpTOCNode Title="ReadUShort Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShort.htm" />
<HelpTOCNode Title="ReadUShortArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_ReadUShortArray.htm" />
<HelpTOCNode Title="SkipPadded Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitReader_SkipPadded.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="0566c26b-eb90-417c-b554-e8261f93f387" Title="BitWriter Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_BitWriter.htm">
<HelpTOCNode Title="BitWriter Constructor " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter__ctor.htm" />
<HelpTOCNode Id="5b1f546c-17e8-417b-895e-393d4f825860" Title="BitWriter Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_BitWriter.htm">
<HelpTOCNode Title="Dispose Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Dispose.htm" />
<HelpTOCNode Id="25ae43e5-0e9d-406a-8760-4141e3e23092" Title="Finalize Method " Url="html/Overload_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Finalize.htm">
<HelpTOCNode Title="Finalize Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Finalize.htm" />
<HelpTOCNode Title="Finalize Method (Byte[])" Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_Finalize_1.htm" />
</HelpTOCNode>
<HelpTOCNode Title="GetFinalizeSize Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_GetFinalizeSize.htm" />
<HelpTOCNode Title="WriteAlignBits Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteAlignBits.htm" />
<HelpTOCNode Title="WriteBits Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBits.htm" />
<HelpTOCNode Title="WriteBool Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteBool.htm" />
<HelpTOCNode Title="WriteByte Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByte.htm" />
<HelpTOCNode Title="WriteByteArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteByteArray.htm" />
<HelpTOCNode Title="WriteDouble Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDouble.htm" />
<HelpTOCNode Title="WriteDoubleArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteDoubleArray.htm" />
<HelpTOCNode Title="WriteFloat Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloat.htm" />
<HelpTOCNode Title="WriteFloatArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteFloatArray.htm" />
<HelpTOCNode Title="WriteInt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteInt.htm" />
<HelpTOCNode Title="WriteIntArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteIntArray.htm" />
<HelpTOCNode Title="WriteLong Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLong.htm" />
<HelpTOCNode Title="WriteLongArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteLongArray.htm" />
<HelpTOCNode Title="WriteSByte Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByte.htm" />
<HelpTOCNode Title="WriteSByteArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteSByteArray.htm" />
<HelpTOCNode Title="WriteShort Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShort.htm" />
<HelpTOCNode Title="WriteShortArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteShortArray.htm" />
<HelpTOCNode Title="WriteString Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteString.htm" />
<HelpTOCNode Title="WriteUInt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUInt.htm" />
<HelpTOCNode Title="WriteUIntArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUIntArray.htm" />
<HelpTOCNode Title="WriteULong Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULong.htm" />
<HelpTOCNode Title="WriteULongArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteULongArray.htm" />
<HelpTOCNode Title="WriteUShort Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShort.htm" />
<HelpTOCNode Title="WriteUShortArray Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_BitWriter_WriteUShortArray.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="15deab02-9c2e-4521-849a-96457b913f9a" Title="MessageChunker Class" Url="html/T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm">
<HelpTOCNode Id="05a7ad68-a7e4-46f1-8374-d7fc33f9e741" Title="MessageChunker Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Binary_MessageChunker.htm">
<HelpTOCNode Title="GetChunkedMessage Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetChunkedMessage.htm" />
<HelpTOCNode Title="GetMessageOrdered Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetMessageOrdered.htm" />
<HelpTOCNode Title="GetMessageUnordered Method " Url="html/M_MLAPI_NetworkingManagerComponents_Binary_MessageChunker_GetMessageUnordered.htm" />
@ -275,35 +428,35 @@
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="be7f225a-d039-48b5-b037-c67df836e7e5" Title="MLAPI.NetworkingManagerComponents.Core" Url="html/N_MLAPI_NetworkingManagerComponents_Core.htm">
<HelpTOCNode Id="78f77132-ff90-4f73-961a-97c6842cb76e" Title="LagCompensationManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Id="4c4fe0dd-463a-4316-90a3-2728fc048e00" Title="LagCompensationManager Properties" Url="html/Properties_T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Id="49a9bcd4-7110-4aaf-8f6c-d722ff810434" Title="MLAPI.NetworkingManagerComponents.Core" Url="html/N_MLAPI_NetworkingManagerComponents_Core.htm">
<HelpTOCNode Id="9dc011d0-59cf-455c-90b8-f13342d8d657" Title="LagCompensationManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Id="d85f118a-1eed-45c0-95a7-d02bfd3b19ba" Title="LagCompensationManager Properties" Url="html/Properties_T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Title="SimulationObjects Property " Url="html/P_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_SimulationObjects.htm" />
</HelpTOCNode>
<HelpTOCNode Id="90899fc4-bf79-4083-92cd-17aadac05cbf" Title="LagCompensationManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Id="6894eb7d-b292-4d9d-849d-42eb9a14992d" Title="Simulate Method " Url="html/Overload_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm">
<HelpTOCNode Title="Simulate Method (Int32, Action)" Url="html/M_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm" />
<HelpTOCNode Title="Simulate Method (Single, Action)" Url="html/M_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate_1.htm" />
<HelpTOCNode Id="faab6a75-3bea-4718-b6a3-795962bd5764" Title="LagCompensationManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager.htm">
<HelpTOCNode Id="045d4910-f505-4653-9ffa-b7e13c559091" Title="Simulate Method " Url="html/Overload_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm">
<HelpTOCNode Title="Simulate Method (Single, Action)" Url="html/M_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate.htm" />
<HelpTOCNode Title="Simulate Method (UInt32, Action)" Url="html/M_MLAPI_NetworkingManagerComponents_Core_LagCompensationManager_Simulate_1.htm" />
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="32a722ed-6329-4367-a80c-cadb18af32c5" Title="NetworkPoolManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager.htm">
<HelpTOCNode Id="560b4766-cf58-404b-a3a8-a1e11a5df9c4" Title="NetworkPoolManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager.htm">
<HelpTOCNode Id="3d56ee61-c383-43fe-b03b-bb53c6965137" Title="NetworkPoolManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager.htm">
<HelpTOCNode Id="25dda867-685d-49b1-9913-912381bcb9f2" Title="NetworkPoolManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager.htm">
<HelpTOCNode Title="CreatePool Method " Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_CreatePool.htm" />
<HelpTOCNode Title="DestroyPool Method " Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_DestroyPool.htm" />
<HelpTOCNode Title="DestroyPoolObject Method " Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_DestroyPoolObject.htm" />
<HelpTOCNode Title="SpawnPoolObject Method " Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkPoolManager_SpawnPoolObject.htm" />
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="e3f8826a-a4c7-422a-8659-1c6e94981ecb" Title="NetworkSceneManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager.htm">
<HelpTOCNode Id="037e49e4-0839-4039-8824-71ac412d046a" Title="NetworkSceneManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager.htm">
<HelpTOCNode Id="8a99b52c-9fcf-402a-a878-25cde910f2ce" Title="NetworkSceneManager Class" Url="html/T_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager.htm">
<HelpTOCNode Id="69a13892-bd40-409a-97f7-b360afe01a07" Title="NetworkSceneManager Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager.htm">
<HelpTOCNode Title="SwitchScene Method " Url="html/M_MLAPI_NetworkingManagerComponents_Core_NetworkSceneManager_SwitchScene.htm" />
</HelpTOCNode>
</HelpTOCNode>
</HelpTOCNode>
<HelpTOCNode Id="6f8aa334-964e-4118-9ae8-ef9670fa52de" Title="MLAPI.NetworkingManagerComponents.Cryptography" Url="html/N_MLAPI_NetworkingManagerComponents_Cryptography.htm">
<HelpTOCNode Id="e557204e-914d-4248-9fd2-97255fb9c879" Title="CryptographyHelper Class" Url="html/T_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper.htm">
<HelpTOCNode Id="64e9a882-2131-4717-a1c8-c2b7ba57487f" Title="CryptographyHelper Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper.htm">
<HelpTOCNode Id="9b2c257a-d866-4660-a03b-8a83fe4eae51" Title="MLAPI.NetworkingManagerComponents.Cryptography" Url="html/N_MLAPI_NetworkingManagerComponents_Cryptography.htm">
<HelpTOCNode Id="e985be53-c814-49d3-a546-73147883fe92" Title="CryptographyHelper Class" Url="html/T_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper.htm">
<HelpTOCNode Id="77035f4a-9681-4dd4-bf62-2731266f105c" Title="CryptographyHelper Methods" Url="html/Methods_T_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper.htm">
<HelpTOCNode Title="Decrypt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Decrypt.htm" />
<HelpTOCNode Title="Encrypt Method " Url="html/M_MLAPI_NetworkingManagerComponents_Cryptography_CryptographyHelper_Encrypt.htm" />
</HelpTOCNode>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"following":[65537,196609,262145,327681,393217,458753,524289,589825,720897,4325377,4718593,5046273,5111809,5373953,5505025,5570561,6029313,6619137,7405569,8650753,8847361,11337729,11468801,11599873,11730945,11796481,11993089,12189697,12255233,12648449,12910593,14221313,14352385,14417921,14680065,14811137,14942209,15204353,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929],"frame":[327681,2097153,15466497],"flooding":[327681,2359297,15466497],"follow":[1],"fields":[65538,196610,262146,327682,393218,458754,524290,589826,720898,15204353,15335425,15466497,15532033,15597569,15663105,15728641,15859713,15925249],"field":[655362,786434,851970,917506,983042,1048578,1114114,1179650,1245186,1310722,1376258,1441794,1507330,1572866,1638402,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2359298,2424834,2490370,2555906,2621442,2686978,2752514,2818050,2883586,2949122,3014658,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4390914,4456450,4521986,4587522,4653058,4915202,4980738,5242882],"first":[5570562,10092545,10813441,14221314],"finalize":[4325377,4718593,5046273,5505025,6619137,7405569,8650753,8847361,11468801,14352385,14942209,15204353,15335425,15466497,15532033,15597569,15728641,15794177,15859713,15925249],"float":[2818049,2949121,3735553,4128769,4259841,4390913,4456449,4653057,4915201,4980737,5242881,10682369,13565953]}
{"false":[7208961,7733249,8060929,8454145,8650753,15007745,15400961,15597569,15728641,16384001,16515073,16580609,17498113,17629185,19070977],"following":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,1310721,2490369,5701633,5767169,5963777,6029313,6094849,6422529,6553601,6619137,6684673,6750209,6815745,6881281,7012353,7077889,7143425,7274497,7405569,7536641,7602177,11337729,12124161,13107201,14286849,15532033,17563649,17825793,17956865,18022401,18415617,18743297,18808833,18874369,19202049,19267585,19333121,19398657,19595265,19726337,20054017,20512769,20774913,20971521,21299201,21692417,21757953,22478849,22544385,22675457,22872065,22937601,23003137,23265281,23461889,23527425,23592961,23658497,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001],"frame":[786433,2097153,21692417],"function":[6029313,9109505,20774913],"flooding":[786433,2621441,21692417],"follow":[1],"fields":[131074,196610,262146,327682,393218,458754,524290,589826,655362,720898,786434,851970,1310722,2490370,20512769,20774913,20971521,21692417,22544385,22937601,23265281,23789569,23920641,23986177,24051713,24182785,24248321,24313857],"field":[917506,983042,1048578,1114114,1179650,1245186,1376258,1441794,1507330,1572866,1638402,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2359298,2424834,2555906,2621442,2686978,2752514,2818050,2883586,2949122,3014658,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5111810,5177346,5242882,5308418,5373954,5439490,5570562,5636098,5832706,5898242,6160386,6225922,6291458,6356994,6946818],"first":[7077890,8060929,8454145,19791873,20840449,23003138],"finalize":[5701633,5767169,5963777,6094849,6422529,6553601,6619137,6815745,7012353,7143425,7274498,7405569,7536641,11337729,12124161,14286849,15138819,15532033,15663108,17956865,18284547,20512769,20971521,21692417,22544385,22937601,23265281,23461889,23527425,23592961,23658497,23789569,23855105,23920641,24051713,24117249,24182785,24248321,24313857,24510465,24576002],"float":[3080193,3735553,4784129,4915201,5439489,5636097,5832705,5898241,6160385,6291457,6946817,13238273,13631489,17039361,17629185,19005441,22347777,23068673]}

View File

@ -1 +1 @@
{"getcomponent":[6029315,6619139,7405571,8650755,8847363,11468803,14352387,15532035,15597571,15663107,15728643,15794179,15859715,15925251],"getmessageunordered":[11075587,14811137,16056321],"getmessageordered":[10485763,14811137,16056321],"getcomponentsinparent":[6029317,6619141,7405573,8650757,8847365,11468805,14352389,15532037,15597573,15663109,15728645,15794181,15859717,15925253],"getcomponentinchildren":[6029316,6619140,7405572,8650756,8847364,11468804,14352388,15532036,15597572,15663108,15728644,15794180,15859716,15925252],"great":[327681,1966081,15466497],"gethashcode":[4325377,4718593,5046273,5505025,6029313,6619137,7405569,8650753,8847361,11468801,14352385,14942209,15204353,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"general":[5308417],"generic":[6488065,6684673,7143425,7274497,9633793,10354689,10485762,11075586,12124161],"getcomponentinparent":[6029314,6619138,7405570,8650754,8847362,11468802,14352386,15532034,15597570,15663106,15728642,15794178,15859714,15925250],"getinstanceid":[6029313,6619137,7405569,8650753,8847361,11468801,14352385,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"gains":[5767169,8650753,8847361,11468801,14352385,15532033,15597569,15859713,15925249],"gameobject":[655362,2555906,3342338,6029313,8519681,11534337,11599873,11730945,11993089,12189697,12255233,12648449,12910593,13041666,15532033,15597569,15663107,15728641,15794177,15859713,15925249],"getparameterautosend":[9306116,11468801,15597569],"getcomponentsinchildren":[6029318,6619142,7405574,8650758,8847366,11468806,14352390,15532038,15597574,15663110,15728646,15794182,15859718,15925254],"guitext":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"given":[4784130,5111809,5373953,5570562,6029313,6094849,6225921,6356993,6619139,6881281,7077889,7471105,7864321,8126465,8323073,8585217,8650758,8847366,9437185,10092545,10158082,10551297,10682369,10813441,11468806,13041665,13107202,13762562,14221314,14352390,15532038,15597574,15663105,15728643,15859718,15925254,16121858,16187393,16252929],"getconfig":[5046273,5701636,15466497],"guielement":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"games":[327681,1900545,15466497],"guitexture":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"gettype":[4325377,4718593,5046273,5505025,6029313,6619137,7405569,8650753,8847361,11468801,14352385,14942209,15204353,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"getnetworkedobject":[6356996,8650753,8847361,11468801,14352385,15532033,15597569,15859713,15925249],"getchunkedmessage":[9568258,14811137,16056321],"gets":[196610,524289,2686977,3080193,3276801,5046273,5439489,5570561,5701633,5767169,5898241,6356993,6488065,6881281,6946817,7077889,7143425,7536641,8650761,8847370,10813441,11468809,11599880,11730952,11993093,12255241,12320769,12386305,12517377,12582916,12648456,12779521,12845057,12910600,12976129,13107202,13172737,13303809,13369345,13500417,13697025,13893633,14090241,14221313,14286849,14352393,14483457,14548993,14745601,14876673,15007745,15073281,15138817,15269889,15466497,15532050,15597586,15663113,15728647,15859729,15925265],"getcomponents":[6029316,6619140,7405572,8650756,8847364,11468804,14352388,15532036,15597572,15663108,15728644,15794180,15859716,15925252]}
{"getcomponent":[11337731,12124163,13107203,14286851,15532035,17956867,23592963,23920643,23986179,24051715,24117251,24182787,24248323,24313859],"getmessageunordered":[7602177,16056323,21299201],"getmessageordered":[7602177,20381699,21299201],"getcomponentsinparent":[11337733,12124165,13107205,14286853,15532037,17956869,23592965,23920645,23986181,24051717,24117253,24182789,24248325,24313861],"getcomponentinchildren":[11337732,12124164,13107204,14286852,15532036,17956868,23592964,23920644,23986180,24051716,24117252,24182788,24248324,24313860],"gethashcode":[5701633,5767169,5963777,6029314,6094849,6422529,6553601,6619137,6815745,7012353,7143425,7274497,7405569,7536641,9109506,11337729,12124161,13107201,14286849,15532033,17956865,20512769,20774914,20971521,21692417,22544385,22937601,23265281,23461889,23527425,23592961,23658497,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24510465,24576001],"general":[5505025],"getfinalizesize":[7274497,15990786,24576001],"generic":[9502721,9764865,10551297,11075585,16056322,16252929,17104897,18481153,20381698],"getcomponentinparent":[11337730,12124162,13107202,14286850,15532034,17956866,23592962,23920642,23986178,24051714,24117250,24182786,24248322,24313858],"getinstanceid":[11337729,12124161,13107201,14286849,15532033,17956865,23592961,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"gains":[10289153,11337729,12124161,17956865,23592961,23920641,24182785,24248321,24313857],"getclientid":[6029313,8912898,20774913],"gameobject":[196609,3670019,3801090,11272193,13107201,18022401,18087938,18415617,18743297,18874369,19267585,19398657,19726337,21495809,22937601,23920641,23986179,24051713,24117249,24182785,24248321,24313857],"getparameterautosend":[11337729,11993092,24182785],"getcomponentsinchildren":[11337734,12124166,13107206,14286854,15532038,17956870,23592966,23920646,23986182,24051718,24117254,24182790,24248326,24313862],"guitext":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"given":[6488066,6750209,6881281,7077890,7274497,7929857,8323073,9175041,9437185,11337734,11665409,12124166,13107201,13893633,14417921,15663105,16318465,16646146,17891330,17956870,18087937,18284545,18546690,18677761,19005441,19791873,20840449,21757954,22478849,22872065,23003138,23592966,23920646,23986177,24182790,24248326,24313862,24576001],"getconfig":[5963777,8847364,21692417],"guielement":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"games":[786433,3342337,21692417],"guitexture":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"gettype":[5701633,5767169,5963777,6029313,6094849,6422529,6553601,6619137,6815745,7012353,7143425,7274497,7405569,7536641,11337729,12124161,13107201,14286849,15532033,17956865,20512769,20774913,20971521,21692417,22544385,22937601,23265281,23461889,23527425,23592961,23658497,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24510465,24576001],"getnetworkedobject":[8323076,11337729,12124161,17956865,23592961,23920641,24182785,24248321,24313857],"getchunkedmessage":[7602177,19136514,21299201],"gets":[589826,3604481,5242881,5963777,6029313,7077889,7274497,8323073,8847361,8912897,9371649,9764865,10092545,10158081,10289153,10551297,10682369,11337737,12124170,13893633,14417921,15990785,17891330,17956873,18022408,18415624,18743301,18874370,19267593,19398664,19464193,19529729,19726344,19857409,19922945,19988481,20119556,20185089,20250625,20578305,20643841,20709377,20774913,20840449,20905985,21102593,21233665,21430273,21561345,21626881,21692417,22085633,22151169,22609921,22740993,23003137,23068673,23134209,23199745,23330817,23592969,23920658,23986184,24051719,24117250,24182802,24248337,24313873,24576001],"getcomponents":[11337732,12124164,13107204,14286852,15532036,17956868,23592964,23920644,23986180,24051716,24117252,24182788,24248324,24313860]}

View File

@ -1 +1 @@
{"hingejoint":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"header":[9568257],"history":[327681,2949121,15466497],"handleobjectspawning":[327681,1835010,15466497],"hosts":[11272193,15466497],"handlerid":[6291457],"hierarchy":[14221313,14942209,15204353,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929],"hashset":[1703938],"hideflags":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"hellman":[327681,3014657,15466497],"handshake":[327681,1245185,15466497],"handler":[6225921,6291457,8650754,8847362,11468802,14352386,15532034,15597570,15859714,15925250],"hasmissingparts":[9633794,14811137,16056321],"hasduplicates":[12124162,14811137,16056321],"handle":[327681,1835009,15466497],"hook":[65537,786434,15204353],"hash":[5046275,5701633,5963781,10616835,15466499],"handlers":[5439489,6160385,6488065,6881281,6946817,7012353,7077889,7143425,7208961,7340033,7536641,8257537,8454145,8650767,8716289,8847375,9175041,9371649,9502721,10027009,11468815,11927554,12582918,13107202,13238274,14155778,14352399,15532047,15597583,15859727,15925263],"helper":[9961473,11862018,14221313,15990785,16056321],"host":[6619138,8585217,8781825,11599873,11993089,12255233,12648449,12845057,12910593,15138817,15532033,15597569,15728643,15859713,15925249]}
{"hingejoint":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"header":[19136513],"history":[786433,3080193,21692417],"handleobjectspawning":[786433,2555906,21692417],"hosts":[786433,3276801,21364737,21692418],"handlerid":[8716289],"hierarchy":[20512769,20971521,21299201,21692417,21757953,22478849,22544385,22872065,22937601,23003137,23265281,23461889,23527425,23658497,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001],"hostid":[393218,1572867,7798786,20774914],"hookmethodname":[655361,1048578,23789569],"hideflags":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"hellman":[786433,3014657,21692417],"handshake":[786433,1900545,21692417],"handler":[7929857,8716289,11337730,12124162,17956866,23592962,23920642,24182786,24248322,24313858],"hasmissingparts":[7602177,17104898,21299201],"hasduplicates":[7602177,16252930,21299201],"handle":[786433,2555905,21692417],"hashing":[9109505],"hte":[393217,1441793,20774913],"hash":[5963779,6029313,8519685,8847361,9109507,11141123,20774913,21692419],"handlers":[9043969,9240577,9371649,9764865,9961473,10092545,10158081,10223617,10354689,10551297,10878977,11337743,12124175,12255233,12386305,12845057,12910593,13500417,13893633,14417921,17891330,17956879,18939906,20119558,20316162,21823490,23592975,23920655,24182799,24248335,24313871],"helper":[21299201,22020098,22413313,23003137,24444929],"host":[1310722,3866625,3932161,7208961,7798786,10944513,11730945,14286850,18022401,18743297,19267585,19398657,19726337,20905985,21233665,21364737,23265283,23920641,24051715,24182785,24248321,24313857]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"key":[262145,327685,851969,2228226,2424834,3014657,5570562,10092548,10813444,14221314,15335425,15466501]}
{"keys":[589825,5111809,24051713],"key":[131073,786437,2752514,3014657,3211266,3407873,7077890,19791876,20840452,21692421,22544385,23003138],"known":[13041667,13631491,13697027,14352387,14548995,14942211,15007747,15073283,15335427,15400963,15597571,15728643,15925251,16384003,16515075,16580611,16973827,17498115,17629187,19070979]}

View File

@ -1 +1 @@
{"large":[9568258,14811137,16056321],"local":[5767169,6356993,8650754,8847362,11468802,11599873,11730945,11993089,12255233,12386305,12648449,12910593,14352386,14745601,15400961,15532035,15597571,15663105,15728641,15859715,15925251],"loose":[5898241,8650753,8847361,11468801,14352385,15532033,15597569,15859713,15925249],"library":[327681,1835009,11534337,15466497,15728641],"list":[196609,327683,1114114,1900547,1966084,2031618,3342339,6029317,6488067,6619141,6684675,7143427,7274499,7405573,8650761,8847369,9568259,9633797,10158081,10354692,10485766,10878979,11075590,11403265,11468809,11730945,11927553,12124165,12582915,12713985,13107201,13238273,13434881,13631489,13762561,13959169,14155777,14352393,14614530,14811143,15466499,15532041,15597577,15663110,15728646,15794181,15859721,15925257,16056327],"longer":[13828097],"locate":[13828097],"looking":[13828097],"link":[1],"lerp":[720897,4128769,15859713],"lag":[327681,2949121,9895937,11534337,15466497,15794177,16121857],"light":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"load":[5308417],"lagcompensationmanager":[4784130,9895937,10551298,10682370,11796483,13762562,14614530,16121860]}
{"large":[7602177,19136514,21299201],"local":[8323073,10289153,11337730,12124162,17956866,18022401,18415617,18743297,19267585,19398657,19464193,19726337,21954561,22085633,23592962,23920643,23986177,24051713,24182787,24248323,24313859],"logic":[786433,2359297,21692417],"loose":[10682369,11337729,12124161,17956865,23592961,23920641,24182785,24248321,24313857],"library":[786433,2555905,21495809,21692417,24051713],"list":[786434,1769474,2424835,2686978,3276802,3342339,3538946,7602183,9502723,9764867,10551299,11075587,11337737,12124169,13107205,14286853,15532037,16056326,16187393,16252933,16646145,17104901,17432577,17891329,17956873,18219011,18284545,18350081,18481156,18546689,18939905,19136515,19660801,20119555,20316161,20381702,21037057,21299207,21692418,21823489,22216705,23396354,23592969,23920649,23986181,24051717,24117253,24182793,24248329,24313865],"longer":[18612225],"long":[14024705,14352385,14680065,15007745,15663105,15990785],"listen":[1310722,3473409,3866625,23265282],"locate":[18612225],"looking":[18612225],"link":[1],"lerp":[851969,4784129,24248321],"lag":[786433,3080193,21495809,21692417,21757953,22282241,24117249],"light":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"load":[5505025],"lagcompensationmanager":[6488066,16318466,18546690,19005442,20054019,21757956,22282241,23396354]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"ownerclientid":[11599873,11730945,12255233,12648449,12910593,13893634,14090242,15532033,15597569,15663105,15859713,15925249],"ongainedownership":[5767170,8650753,8847361,11468801,14352385,15532033,15597569,15859713,15925249],"optional":[5701633,10485762,11075586,11141121],"ownedobjects":[262145,1114114,15335425],"onserverstarted":[196609,3604482,15728641],"objects":[5111809,11141121,11796481,12058625,14614529,16121857,16187393],"onlostownership":[5898242,8650753,8847361,11468801,14352385,15532033,15597569,15859713,15925249],"ownership":[5767169,5898241,6029313,8192001,8650754,8847362,11468802,14352386,15532034,15597570,15663105,15859714,15925250],"onclientdisconnectcallback":[196609,3145730,15728641],"overrides":[8650753,11468801,14352385,15597569,15859713,15925249],"owns":[7012353,7340033,8650754,8847362,11468802,11599875,12255235,12648451,12910595,13369345,13697025,14090241,14155778,14352386,15532037,15597573,15859717,15925253],"override":[9371649,9502721,10027009,11534337,15532033],"object":[327681,524290,1835009,3080194,4325380,4718598,5046278,5111811,5505028,5767169,5898241,6029327,6356993,6619150,7012353,7340033,7405582,7602177,7864322,7995393,8192001,8257537,8650775,8716289,8847383,9240577,11141121,11272193,11403266,11468823,11534337,11599877,11730955,11927554,11993090,12058625,12189698,12255237,12386305,12517377,12648453,12910597,12976129,13041667,13172738,13303809,13500417,14155778,14221313,14352407,14483458,14745601,14942213,15007746,15204357,15335431,15466505,15532062,15597598,15663134,15728658,15794195,15859742,15925278,15990785,16056321,16121857,16187396,16252929],"order":[10354690,10485761,11075585,14811139,16056323],"original":[10485761,10747905,11075585,14680065,14811138,15990785,16056322],"obsolete":[6029313,6619137,7405569,8650753,8847361,11468801,11599889,11730961,11993105,12189713,12255249,12648465,12910609,14352385,15532050,15597586,15663122,15728658,15794194,15859730,15925266],"owned":[262145,1114113,11599873,11730945,12255233,12386305,12648449,12910593,14745601,15335425,15532033,15597569,15663105,15859713,15925249],"owner":[6029314,7602177,7864321,7995394,8257537,8650756,8716289,8847364,9240577,11403266,11468804,11730945,11927554,13893633,14352388,15532036,15597572,15663107,15859716,15925252],"overload":[6094849,6160385,6422529,6488065,6553601,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7471105,7536641,7602177,7667713,7798785,7929857,8257537,8454145,8716289,9175041,9240577,9699329,10158081,10551297,10616833,10682369,10878977,10944513,11403265,11927553,12582913,12713985,13107201,13238273,13434881,13631489,13762561,14155777],"onclientconnectedcallback":[196609,3407874,15728641],"occur":[327681,2097153,15466497],"occurred":[5308417]}
{"ownerclientid":[18022401,18415617,19267585,19398657,19726337,20185090,22151170,23920641,23986177,24182785,24248321,24313857],"obj":[8650754],"ongainedownership":[10289154,11337729,12124161,17956865,23592961,23920641,24182785,24248321,24313857],"outside":[589825,5111809,24051713],"optional":[8847361,11730946,13041665,13631489,13697025,14352385,14548993,14942209,15007745,15073281,15335425,15400961,15597569,15728641,15925249,16056322,16384001,16515073,16580609,16842753,16973825,17498113,17629185,19070977,20381698],"ownedobjects":[131073,3538946,22544385],"onserverstarted":[589825,4653058,24051713],"objects":[6750209,16842753,17235969,20054017,21757953,22478849,23396353],"onlostownership":[10682370,11337729,12124161,17956865,23592961,23920641,24182785,24248321,24313857],"ownership":[10289153,10682369,11010049,11337730,12124162,13107201,17956866,23592962,23920642,23986177,24182786,24248322,24313858],"onclientdisconnectcallback":[589825,4456450,24051713],"operators":[20774913,22675458],"overrides":[6029314,11337729,17956865,20774914,23592961,24182785,24248321,24313857],"owns":[10354689,10878977,11337730,12124162,17956866,18022403,18939906,19267587,19398659,19529729,19726339,19922945,20185089,23592962,23920645,24182789,24248325,24313861],"override":[8650753,9109505,12255233,12386305,12845057,21495809,23920641],"object":[786433,2555905,5701636,5767174,5963782,6029316,6094854,6422532,6553604,6619142,6750211,6815750,7012358,7143428,7274500,7405572,7536646,8323073,8650757,9109505,9568261,9699329,9830405,9961473,10027013,10223617,10289153,10354689,10682369,10813441,10878977,11010049,11337751,11468801,11665410,12124183,13107215,14286862,15532046,16842753,17235969,17956887,18022405,18087939,18415627,18743298,18874370,18939906,19267589,19398661,19464193,19660802,19726341,19857410,20316162,20512776,20578305,20643842,20774916,20971527,21102593,21299201,21364738,21495809,21561346,21626881,21692425,21757953,22085633,22478852,22544391,22740993,22872065,22937607,23003137,23265287,23461893,23527429,23592983,23658501,23789573,23855109,23920670,23986204,24051730,24117267,24182814,24248350,24313886,24379393,24444929,24510471,24576005],"operator":[8060930,8454146],"order":[7602179,16056321,18481154,20381697,21299203],"original":[6684673,7602178,13369345,16056321,20381697,21299202,24444929],"obsolete":[11337729,12124161,13107201,14286849,15532033,17956865,18022417,18415633,18743313,18874385,19267601,19398673,19726353,23592961,23920658,23986194,24051730,24117266,24182802,24248338,24313874],"owned":[131073,3538945,18022401,18415617,19267585,19398657,19464193,19726337,22085633,22544385,23920641,23986177,24182785,24248321,24313857],"owner":[655361,917505,9699329,9961473,10223617,10813442,11337732,11468801,11665409,12124164,13107202,17956868,18415617,19660802,20316162,22151169,23592964,23789569,23920644,23986179,24182788,24248324,24313860],"overload":[7798785,8126465,9043969,9175041,9240577,9306113,9371649,9437185,9502721,9633793,9699329,9764865,9895937,9961473,10092545,10223617,10354689,10420225,10485761,10551297,10878977,11075585,11141121,11468801,11534337,12058625,12451841,12713985,12910593,13303809,13500417,13565953,13893633,14417921,15138817,15663105,16187393,16318465,16646145,17432577,17891329,18219009,18284545,18350081,18546689,18939905,19005441,19660801,20119553,20316161,21037057,21823489,22216705],"onclientconnectedcallback":[589825,4063234,24051713],"occur":[786433,2097153,21692417],"occurred":[5505025]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"qostype":[1310722],"queue":[327681,2162689,15466497],"quaternion":[13041667]}
{"qostype":[1179650],"queue":[786433,2883585,21692417],"quaternion":[4521986,11730948,18087939],"qos":[262145,1179649,20512769]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"useguilayout":[11599873,11730945,11993089,12189697,12255233,12648449,12910593,15532033,15597569,15663105,15728641,15794177,15859713,15925249],"url":[13828097],"unique":[11730945,13303809,15663105],"uint":[6356993,9633793,11141121,12124161,13303809,13697025],"unityengine":[13041666],"ump":[6029316,6619140,7405572,8650756,8847364,11468804,14352388,15532036,15597572,15663108,15728644,15794180,15859716,15925252],"uint32":[6356995,9633793,11141121,12124161,13303809,13697025],"updated":[65537,786433,15204353],"user":[6094850,6160386,6422530,6488066,6553602,6684674,6750210,6815746,6881282,6946818,7012354,7077890,7143426,7208962,7274498,7340034,7471106,7536642,7602178,7667714,7798786,7929858,8257538,8454146,8716290,9175042,9240578,9699330],"used":[262145,327684,851969,1310721,1376257,1703937,1900545,6291457,11272193,11534338,11730945,12255233,13959169,14286849,15335425,15466501,15597569,15663106,15794177],"uint16":[1769473,13500417],"ushort":[1769473,13500417]}
{"uint64":[12451846,14745601,15073281,16121859,16515076,17432577,23724033,24379393],"useguilayout":[18022401,18415617,18743297,18874369,19267585,19398657,19726337,23920641,23986177,24051713,24117249,24182785,24248321,24313857],"url":[18612225],"unique":[18415617,21626881,23986177],"uint":[3145729,4063233,4456449,4521986,8126465,8323073,8716289,8912897,9175041,9371649,9502721,9764865,10485761,10551297,10813441,11665409,13565954,13893633,14090241,14548993,15728641,16252929,16318465,16842753,17104897,17301505,19922945,20185089,21626881,21954561,22151169,23134209],"ulong":[12451842,14745601,15073281,16121857,16515073],"unityengine":[11730948,18087938],"ump":[11337732,12124164,13107204,14286852,15532036,17956868,23592964,23920644,23986180,24051716,24117252,24182788,24248324,24313860],"uint32":[3145729,4063233,4456449,4521986,6488065,8126466,8323075,8716289,8912897,9175042,9371650,9502722,9764866,10485762,10551298,10813441,11337735,11665409,12124167,13565958,13893634,14090241,14548993,15728644,16187393,16252929,16318466,16646145,16842753,17104897,17301507,17432577,17891329,17956871,18219010,18546689,19922945,20119555,20185089,20774913,21626881,21757953,21954561,22151169,23134209,23592967,23724033,23920647,24182791,24248327,24313863,24379393],"updated":[655361,1048577,23789569],"unity":[589825,5111809,24051713],"user":[9043970,9175042,9240578,9306114,9371650,9437186,9502722,9633794,9699330,9764866,9895938,9961474,10092546,10223618,10354690,10420226,10485762,10551298,10878978,11075586,11468802,12058626,12713986,12910594,13303810,13500418,13893634,14417922],"using":[10747905,14286849,24051713],"udp":[1310721,3473409,23265281],"uses":[786434,2359297,3276801,21692418],"used":[131073,589825,786435,1769473,2162689,3342337,3407873,5111809,8716289,14811137,19267585,21364737,21495810,21692420,22544385,23330817,23986177,24051713,24117249,24182785,24576001],"uint16":[1245185,4325377,7798786,15204353,16187393,16908291,16973825,17498116,20774913,22740993],"ushort":[1245185,4325377,7798785,15204353,16908289,16973825,17498113,22740993]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"warp":[720897,3997697,15859713],"web":[13828097],"wait":[327681,1245185,15466497],"write":[11534337,15532033],"warpondestinationchange":[720897,3997698,15859713],"wheter":[327686,1048577,1179649,1441793,1507329,1835009,3014657,11993090,14876673,15269889,15466502,15728642]}
{"writefloatarray":[7274497,17629189,24576001],"writeshort":[7274497,15794180,24576001],"writeintarray":[7274497,19070981,24576001],"writeuintarray":[7274497,15728645,24576001],"writedouble":[7274497,15859716,24576001],"writesbyte":[7274497,15269892,24576001],"writeuint":[7274497,17301508,24576001],"writelongarray":[7274497,15007749,24576001],"warp":[851969,6225921,24248321],"writeint":[7274497,18153476,24576001],"writebyte":[7274497,14155780,24576001],"web":[18612225],"writeulong":[7274497,16121860,24576001],"writealignbits":[7274497,16449539,24576001],"writebits":[7274497,16777221,24576001],"wait":[786433,1900545,21692417],"writedoublearray":[7274497,16580613,24576001],"websockets":[1310722,3473411,10747905,14286849,23265282,24051713],"writestring":[7274497,16711684,24576001],"writesbytearray":[7274497,15597573,24576001],"writefloat":[7274497,17039364,24576001],"writelong":[7274497,14680068,24576001],"writeulongarray":[7274497,16515077,24576001],"writeushortarray":[7274497,17498117,24576001],"writeshortarray":[7274497,16384005,24576001],"writebool":[7274497,17170436,24576001],"writeushort":[7274497,16908292,24576001],"write":[21495809,23920641],"written":[15138817,15663105],"writes":[7274497,15663105,18284545,24576001],"writebytearray":[7274497,15400965,24576001],"warpondestinationchange":[851969,6225922,24248321],"wheter":[196609,262145,786438,1376257,1638401,1703937,1835009,2031617,2490369,2555905,2818049,3014657,4194305,6029313,7208961,18743298,19988481,20512769,20774913,20971521,21430273,21692422,22937601,24051714]}

View File

@ -1 +1 @@
{"xml":[327682,2228225,2424833,15466498]}
{"xml":[786434,2752513,3211265,21692418]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"binary":[6094849,6160385,6422529,6684673,6750209,6815745,6881281,7012353,7143425,7274497,7471105,7536641,7602177,7667713,7798785,7929857,8257537,8454145,8650760,8716289,8847368,9175041,9240577,9568258,9633794,9699329,10158081,10354690,10420226,10485763,10747910,10878978,11075587,11206660,11403265,11468808,11862018,11927553,12124162,12713985,13238273,13631489,14352392,14680067,14811137,15532040,15597576,15859720,15925256,15990790,16056323],"box":[13828097],"broadcastmessage":[6029316,6619140,7405572,8650756,8847364,11468804,14352388,15532036,15597572,15663108,15728644,15794180,15859716,15925252],"behaviour":[11599874,11730946,11993090,12189698,12255234,12648450,12910594,15532035,15597571,15663107,15728643,15794179,15859715,15925251],"buffer":[327681,1572865,5570562,6094849,6160385,6422529,6488065,6553601,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7340033,7536641,7602177,7929857,8257537,8454145,8650772,8847380,10092546,10158081,10485761,10813442,10878980,11075585,11403265,11468820,11927553,12582918,12713985,13107202,13238273,13631489,14155778,14221314,14352404,14811138,15466497,15532052,15597588,15859732,15925268,16056322],"binaryserializer":[10420226,10747906,11206658,11862017,14680067,15990788],"binaryignore":[4849668,5505027,11010049,14417923,14942214],"based":[4784129,10551297,13762561,16121857],"bool":[1048577,1179649,1441793,1507329,1835009,2490369,2686977,2883585,3014657,3080193,3276801,3670017,3866625,3997697,4194305,4521985,4587521,5701633,5963777,9306113,9633793,10289153,10354689,12124161,12320769,12386305,12517377,12779521,12845057,12976129,13172737,14483457,14745601,14876673,15007745,15073281,15138817,15269889],"base":[11534337,15532033],"bytes":[5570562,9568257,10092545,10813441,14221314],"byte":[851970,1376258,2490370,5701634,5963780,6094851,6160387,6291458,6422531,6684675,6750211,6815747,6881283,7012355,7143427,7536643,7602179,7929859,8257539,8454147,8650766,8847374,9568262,9633794,10092551,10158081,10354690,10485765,10747906,10813447,10878979,11075589,11206658,11403265,11468814,11927553,12124162,12582915,12713985,13107201,13238273,13631489,14155777,14352398,14811137,15532046,15597582,15859726,15925262,16056321],"background":[196609,2686977,15728641],"boolean":[1048577,1179649,1441793,1507329,1835009,2490369,2686977,2883585,3014657,3080193,3276801,3670017,3866625,3997697,4194305,4521985,4587521,5701635,5963777,6029320,6619144,7405576,8650760,8847368,9306113,9633793,10289155,10354689,11468808,12124161,12320769,12386305,12517377,12779521,12845057,12976129,13172737,14352392,14483457,14745601,14876673,15007745,15073281,15138817,15269889,15532040,15597576,15663112,15728648,15794184,15859720,15925256]}
{"binary":[6684675,6815745,7274497,7602177,9043969,9175041,9306113,9371649,9437185,9502721,9633793,9699329,9895937,9961473,10223617,10354689,10420225,10485761,10551297,11075585,11337736,11468801,12058625,12124168,12451845,12648452,12713985,12779522,12910593,13041669,13238276,13369350,13434884,13500417,13565957,13631493,13697029,13762564,13828100,13893633,13959171,14024708,14090244,14155780,14221317,14352389,14483460,14548997,14614532,14680068,14745604,14811138,14876676,14942213,15007749,15073285,15138818,15204356,15269892,15335429,15400965,15466500,15597573,15663107,15728645,15794180,15859716,15925253,15990786,16056323,16121860,16252930,16384005,16449539,16515077,16580613,16646145,16711684,16777221,16908292,16973829,17039364,17104898,17170436,17301508,17367043,17432577,17498117,17629189,17760259,17956872,18153476,18219010,18284545,18350081,18481154,19070981,19136514,19660801,20316161,20381699,21037057,21299203,21823489,22020098,23592968,23724033,23920648,24182792,24248328,24313864,24379396,24444934,24510468,24576005],"box":[18612225],"broadcastmessage":[11337732,12124164,13107204,14286852,15532036,17956868,23592964,23920644,23986180,24051716,24117252,24182788,24248324,24313860],"behaviour":[18022402,18415618,18743298,18874370,19267586,19398658,19726338,23920643,23986179,24051715,24117251,24182787,24248323,24313859],"buffer":[786433,2228225,7077890,7274497,7602178,9043969,9175041,9240577,9371649,9502721,9633793,9699329,9764865,9895937,9961473,10092545,10354689,10485761,10551297,10878977,11337748,12058625,12124180,12910593,13303809,13893633,14417921,15663108,16056321,16646145,17891330,17956884,18219012,18284545,18350081,18939906,19660801,19791874,20119558,20316161,20381697,20840450,21037057,21299202,21692417,21823489,23003138,23592980,23920660,24182804,24248340,24313876,24576001],"binaryserializer":[6684675,12779522,13369346,13762562,22020097,24444932],"binaryignore":[5701635,7471108,18808835,21168129,23461894],"based":[6488065,16318465,18546689,21757953],"bitwriter":[7274499,14155780,14680068,14811139,15007749,15138818,15269892,15400965,15597573,15663107,15728645,15794180,15859716,15990786,16121860,16384005,16449539,16515077,16580613,16711684,16777221,16908292,17039364,17170436,17301508,17498117,17629189,17760259,18153476,18284546,19070981,22020097,24576007],"binaryhelpers":[12451845,13565957,17432578,22020097,23724034,24379396],"bool":[589825,917505,1376257,1638401,1703937,1835009,2031617,2359297,2555905,2818049,3014657,3473409,3604481,3997697,4194305,4521985,4849665,5046273,5111810,5242881,5308417,5373953,5570561,6225921,7208961,7733249,7798786,8060929,8454145,8519681,8650753,8847361,11993089,12976129,14483457,15007745,15400961,15597569,15728641,16252929,16384001,16515073,16580609,17104897,17170433,17498113,17629185,18481153,19070977,19464193,19857409,19988481,20250625,20578305,20643841,20709377,20905985,21102593,21233665,21430273,21561345,22085633,22609921,24051713],"base":[21495809,23920641],"bitreader":[6815747,12648452,13041669,13238276,13434884,13631493,13697029,13828100,13959173,14024708,14090244,14221317,14352389,14483460,14548997,14614532,14745604,14876676,14942213,15073285,15204356,15335429,15466500,15925253,16973829,17367043,22020097,24510471],"bytes":[7077890,7274497,15663105,15990786,19136513,19791873,20840449,23003138,24576001],"byte":[1441794,1572866,2162690,3407874,4521986,7274497,7602177,7798787,8519684,8716290,8847362,9043971,9175043,9371651,9502723,9633795,9699331,9895939,9961475,10354691,10485763,10551299,11337742,12058627,12124174,12910595,13369346,13762562,13893635,13959171,14155780,14221314,14876674,15138818,15335426,15400965,15663108,16056325,16187393,16252930,16646145,16777221,17104898,17891329,17956878,18219011,18284545,18350081,18481154,18939905,19136518,19660801,19791879,20119555,20316161,20381701,20774913,20840455,21037057,21299201,21823489,23592974,23920654,24182798,24248334,24313870,24576001],"bits":[14221315,16777219],"background":[589825,3604481,24051713],"boolean":[917505,1376257,1638401,1703937,1835009,2031617,2359297,2555905,2818049,3014657,3473409,3604481,3997697,4194305,4521985,4849665,5046273,5111809,5242881,5308417,5373953,5570561,6225921,7208961,7733249,7798788,8060929,8454145,8519681,8650753,8847363,11337736,11993089,12124168,12976131,13107208,14286856,14483457,15007748,15400964,15532040,15597572,15728644,16187394,16252929,16384004,16515076,16580612,17104897,17170435,17498116,17629188,17956872,18481153,19070980,19464193,19857409,19988481,20250625,20578305,20643841,20709377,20774914,20905985,21102593,21233665,21430273,21561345,22085633,22609921,23592968,23920648,23986184,24051720,24117256,24182792,24248328,24313864]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,21 +0,0 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SyncedVar.hook Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="hook field" /><meta name="System.Keywords" content="SyncedVar.hook field" /><meta name="Microsoft.Help.F1" content="MLAPI.Attributes.SyncedVar.hook" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Attributes.SyncedVar.hook" /><meta name="Description" content="The method name to invoke when the SyncVar get's updated." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Attributes" /><meta name="file" content="F_MLAPI_Attributes_SyncedVar_hook" /><meta name="guid" content="F_MLAPI_Attributes_SyncedVar_hook" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Attributes.htm" title="MLAPI.Attributes" tocid="N_MLAPI_Attributes">MLAPI.Attributes</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Class" tocid="T_MLAPI_Attributes_SyncedVar">SyncedVar Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Fields" tocid="Fields_T_MLAPI_Attributes_SyncedVar">SyncedVar Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Attributes_SyncedVar_hook.htm" title="hook Field" tocid="F_MLAPI_Attributes_SyncedVar_hook">hook Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>SyncedVar<span id="LST43A2DB5A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST43A2DB5A_0?cpp=::|nu=.");</script>hook Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The method name to invoke when the SyncVar get's updated.
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Attributes.htm">MLAPI.Attributes</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">hook</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Attributes/SyncedVar.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Attributes_SyncedVar.htm">SyncedVar Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Attributes.htm">MLAPI.Attributes Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SyncedVar.hookMethodName Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="hookMethodName field" /><meta name="System.Keywords" content="SyncedVar.hookMethodName field" /><meta name="Microsoft.Help.F1" content="MLAPI.Attributes.SyncedVar.hookMethodName" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Attributes.SyncedVar.hookMethodName" /><meta name="Description" content="The method name to invoke when the SyncVar get's updated." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Attributes" /><meta name="file" content="F_MLAPI_Attributes_SyncedVar_hookMethodName" /><meta name="guid" content="F_MLAPI_Attributes_SyncedVar_hookMethodName" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Attributes.htm" title="MLAPI.Attributes" tocid="N_MLAPI_Attributes">MLAPI.Attributes</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Class" tocid="T_MLAPI_Attributes_SyncedVar">SyncedVar Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Fields" tocid="Fields_T_MLAPI_Attributes_SyncedVar">SyncedVar Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Attributes_SyncedVar_hookMethodName.htm" title="hookMethodName Field" tocid="F_MLAPI_Attributes_SyncedVar_hookMethodName">hookMethodName Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Attributes_SyncedVar_target.htm" title="target Field" tocid="F_MLAPI_Attributes_SyncedVar_target">target Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>SyncedVar<span id="LST7CBFECFC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7CBFECFC_0?cpp=::|nu=.");</script>hookMethodName Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The method name to invoke when the SyncVar get's updated.
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Attributes.htm">MLAPI.Attributes</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">hookMethodName</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Attributes/SyncedVar.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Attributes_SyncedVar.htm">SyncedVar Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Attributes.htm">MLAPI.Attributes Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SyncedVar.target Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="target field" /><meta name="System.Keywords" content="SyncedVar.target field" /><meta name="Microsoft.Help.F1" content="MLAPI.Attributes.SyncedVar.target" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Attributes.SyncedVar.target" /><meta name="Description" content="If true, the syncedVar will only be synced to the owner." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Attributes" /><meta name="file" content="F_MLAPI_Attributes_SyncedVar_target" /><meta name="guid" content="F_MLAPI_Attributes_SyncedVar_target" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Attributes.htm" title="MLAPI.Attributes" tocid="N_MLAPI_Attributes">MLAPI.Attributes</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Class" tocid="T_MLAPI_Attributes_SyncedVar">SyncedVar Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Attributes_SyncedVar.htm" title="SyncedVar Fields" tocid="Fields_T_MLAPI_Attributes_SyncedVar">SyncedVar Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Attributes_SyncedVar_hookMethodName.htm" title="hookMethodName Field" tocid="F_MLAPI_Attributes_SyncedVar_hookMethodName">hookMethodName Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Attributes_SyncedVar_target.htm" title="target Field" tocid="F_MLAPI_Attributes_SyncedVar_target">target Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>SyncedVar<span id="LST39AFE3DC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39AFE3DC_0?cpp=::|nu=.");</script>target Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
If true, the syncedVar will only be synced to the owner.
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Attributes.htm">MLAPI.Attributes</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">target</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Attributes/SyncedVar.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Attributes_SyncedVar.htm">SyncedVar Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Attributes.htm">MLAPI.Attributes Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.Encrypted Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Encrypted field" /><meta name="System.Keywords" content="Channel.Encrypted field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.Channel.Encrypted" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.Channel.Encrypted" /><meta name="Description" content="Wheter or not the channel should be encrypted" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_Channel_Encrypted" /><meta name="guid" content="F_MLAPI_Data_Channel_Encrypted" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_Channel.htm" title="Channel Class" tocid="T_MLAPI_Data_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_Channel.htm" title="Channel Fields" tocid="Fields_T_MLAPI_Data_Channel">Channel Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Encrypted.htm" title="Encrypted Field" tocid="F_MLAPI_Data_Channel_Encrypted">Encrypted Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Name.htm" title="Name Field" tocid="F_MLAPI_Data_Channel_Name">Name Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Type.htm" title="Type Field" tocid="F_MLAPI_Data_Channel_Type">Type Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>Channel<span id="LSTA6F1F606_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6F1F606_0?cpp=::|nu=.");</script>Encrypted Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
Wheter or not the channel should be encrypted
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">Encrypted</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/Channel.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.Name Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Name field" /><meta name="System.Keywords" content="Channel.Name field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.Channel.Name" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.Channel.Name" /><meta name="Description" content="The name of the channel" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_Channel_Name" /><meta name="guid" content="F_MLAPI_Data_Channel_Name" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_Channel.htm" title="Channel Class" tocid="T_MLAPI_Data_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_Channel.htm" title="Channel Fields" tocid="Fields_T_MLAPI_Data_Channel">Channel Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Encrypted.htm" title="Encrypted Field" tocid="F_MLAPI_Data_Channel_Encrypted">Encrypted Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Name.htm" title="Name Field" tocid="F_MLAPI_Data_Channel_Name">Name Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Type.htm" title="Type Field" tocid="F_MLAPI_Data_Channel_Type">Type Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>Channel<span id="LSTFA36A177_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA36A177_0?cpp=::|nu=.");</script>Name Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The name of the channel
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Name</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/Channel.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.Type Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Type field" /><meta name="System.Keywords" content="Channel.Type field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.Channel.Type" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.Channel.Type" /><meta name="Description" content="The Transport QOS type" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_Channel_Type" /><meta name="guid" content="F_MLAPI_Data_Channel_Type" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_Channel.htm" title="Channel Class" tocid="T_MLAPI_Data_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_Channel.htm" title="Channel Fields" tocid="Fields_T_MLAPI_Data_Channel">Channel Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Encrypted.htm" title="Encrypted Field" tocid="F_MLAPI_Data_Channel_Encrypted">Encrypted Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Name.htm" title="Name Field" tocid="F_MLAPI_Data_Channel_Name">Name Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_Channel_Type.htm" title="Type Field" tocid="F_MLAPI_Data_Channel_Type">Type Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>Channel<span id="LST2EB58AB6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2EB58AB6_0?cpp=::|nu=.");</script>Type Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The Transport QOS type
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">QosType</span> <span class="identifier">Type</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/Channel.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <span class="nolink">QosType</span></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>MessageType.Name Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Name field" /><meta name="System.Keywords" content="MessageType.Name field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.MessageType.Name" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.MessageType.Name" /><meta name="Description" content="The name of the messageType" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_MessageType_Name" /><meta name="guid" content="F_MLAPI_Data_MessageType_Name" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_MessageType.htm" title="MessageType Class" tocid="T_MLAPI_Data_MessageType">MessageType Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_MessageType.htm" title="MessageType Fields" tocid="Fields_T_MLAPI_Data_MessageType">MessageType Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_MessageType_Name.htm" title="Name Field" tocid="F_MLAPI_Data_MessageType_Name">Name Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_MessageType_Passthrough.htm" title="Passthrough Field" tocid="F_MLAPI_Data_MessageType_Passthrough">Passthrough Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>MessageType<span id="LSTBFA85D4F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBFA85D4F_0?cpp=::|nu=.");</script>Name Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The name of the messageType
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Name</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/MessageType.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_MessageType.htm">MessageType Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>MessageType.Passthrough Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Passthrough field" /><meta name="System.Keywords" content="MessageType.Passthrough field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.MessageType.Passthrough" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.MessageType.Passthrough" /><meta name="Description" content="Wheter or not the channel should have passthrough support." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_MessageType_Passthrough" /><meta name="guid" content="F_MLAPI_Data_MessageType_Passthrough" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_MessageType.htm" title="MessageType Class" tocid="T_MLAPI_Data_MessageType">MessageType Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_MessageType.htm" title="MessageType Fields" tocid="Fields_T_MLAPI_Data_MessageType">MessageType Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_MessageType_Name.htm" title="Name Field" tocid="F_MLAPI_Data_MessageType_Name">Name Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_MessageType_Passthrough.htm" title="Passthrough Field" tocid="F_MLAPI_Data_MessageType_Passthrough">Passthrough Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>MessageType<span id="LST48571BB0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST48571BB0_0?cpp=::|nu=.");</script>Passthrough Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
Wheter or not the channel should have passthrough support.
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">Passthrough</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/MessageType.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_MessageType.htm">MessageType Class</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NetId.ConnectionId Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ConnectionId field" /><meta name="System.Keywords" content="NetId.ConnectionId field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.NetId.ConnectionId" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.NetId.ConnectionId" /><meta name="Description" content="The connectionId this client is assigned" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_NetId_ConnectionId" /><meta name="guid" content="F_MLAPI_Data_NetId_ConnectionId" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_NetId.htm" title="NetId Structure" tocid="T_MLAPI_Data_NetId">NetId Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_NetId.htm" title="NetId Fields" tocid="Fields_T_MLAPI_Data_NetId">NetId Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_ConnectionId.htm" title="ConnectionId Field" tocid="F_MLAPI_Data_NetId_ConnectionId">ConnectionId Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_HostId.htm" title="HostId Field" tocid="F_MLAPI_Data_NetId_HostId">HostId Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_Meta.htm" title="Meta Field" tocid="F_MLAPI_Data_NetId_Meta">Meta Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>NetId<span id="LSTE2602548_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2602548_0?cpp=::|nu=.");</script>ConnectionId Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The connectionId this client is assigned
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ushort</span> <span class="identifier">ConnectionId</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/NetId.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s6eyk10z" target="_blank">UInt16</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_NetId.htm">NetId Structure</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NetId.HostId Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="HostId field" /><meta name="System.Keywords" content="NetId.HostId field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.NetId.HostId" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.NetId.HostId" /><meta name="Description" content="The hostId this client is on" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_NetId_HostId" /><meta name="guid" content="F_MLAPI_Data_NetId_HostId" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_NetId.htm" title="NetId Structure" tocid="T_MLAPI_Data_NetId">NetId Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_NetId.htm" title="NetId Fields" tocid="Fields_T_MLAPI_Data_NetId">NetId Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_ConnectionId.htm" title="ConnectionId Field" tocid="F_MLAPI_Data_NetId_ConnectionId">ConnectionId Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_HostId.htm" title="HostId Field" tocid="F_MLAPI_Data_NetId_HostId">HostId Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_Meta.htm" title="Meta Field" tocid="F_MLAPI_Data_NetId_Meta">Meta Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>NetId<span id="LST30AF07EA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST30AF07EA_0?cpp=::|nu=.");</script>HostId Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
The hostId this client is on
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">byte</span> <span class="identifier">HostId</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/NetId.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_NetId.htm">NetId Structure</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

View File

@ -0,0 +1,21 @@
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NetId.Meta Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Meta field" /><meta name="System.Keywords" content="NetId.Meta field" /><meta name="Microsoft.Help.F1" content="MLAPI.Data.NetId.Meta" /><meta name="Microsoft.Help.Id" content="F:MLAPI.Data.NetId.Meta" /><meta name="Description" content="Meta data about hte client" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="MLAPI.Data" /><meta name="file" content="F_MLAPI_Data_NetId_Meta" /><meta name="guid" content="F_MLAPI_Data_NetId_Meta" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script><script type="text/javascript" src="../scripts/clipboard.min.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">MLAPI API Reference<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html\N_MLAPI_Attributes.htm" title="MLAPI API Reference" tocid="roottoc">MLAPI API Reference</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/N_MLAPI_Data.htm" title="MLAPI.Data" tocid="N_MLAPI_Data">MLAPI.Data</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/T_MLAPI_Data_NetId.htm" title="NetId Structure" tocid="T_MLAPI_Data_NetId">NetId Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="../html/Fields_T_MLAPI_Data_NetId.htm" title="NetId Fields" tocid="Fields_T_MLAPI_Data_NetId">NetId Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_ConnectionId.htm" title="ConnectionId Field" tocid="F_MLAPI_Data_NetId_ConnectionId">ConnectionId Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_HostId.htm" title="HostId Field" tocid="F_MLAPI_Data_NetId_HostId">HostId Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="../html/F_MLAPI_Data_NetId_Meta.htm" title="Meta Field" tocid="F_MLAPI_Data_NetId_Meta">Meta Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn"><h1>NetId<span id="LST9B121530_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B121530_0?cpp=::|nu=.");</script>Meta Field</h1></td><td class="logoColumn"><img width="600" src="../icons/MLAPI_Logo.png" /></td></tr></table><span class="introStyle"></span> <p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[This is preliminary documentation and is subject to change.]</p><div class="summary">
Meta data about hte client
</div><p> </p>
<strong>Namespace:</strong>
 <a href="N_MLAPI_Data.htm">MLAPI.Data</a><br />
<strong>Assembly:</strong>
 MLAPI (in MLAPI.dll) Version: 1.0.0.0 (1.0.0.0)<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EACA_tab1" class="codeSnippetContainerTabSingle">C#</div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EACA_copyCode" href="#" class="copyCodeSnippet" onclick="javascript:CopyToClipboard('ID0EACA');return false;" title="Copy">Copy</a></div></div><div id="ID0EACA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">byte</span> <span class="identifier">Meta</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EACA");</script><a id="HT_RequestExampleLink" href="https://github.com/TwoTenPvP/MLAPI/issues/new" target="_blank" class="button" title="Request an example for this topic">Request Example</a>
<script type="text/javascript">
var HT_requestExampleLink = document.getElementById("HT_RequestExampleLink");
var HT_requestExampleLinkText = HT_requestExampleLink.innerHTML;
if(HT_requestExampleLink.href.substring(0, 4).toLowerCase() == "http")
HT_requestExampleLink.href += "?title=";
else
HT_requestExampleLink.href += "?subject=MLAPI API Reference: ";
HT_requestExampleLink.href += "Add an Example for " + encodeURIComponent(document.title) + "&amp;body=" +
encodeURIComponent("Please add an example for " + document.title + ".%0D%0DTODO (optional): Describe a specific " +
"scenario you would like to see addressed.%0D%0DHelp Topic: " + window.location.href).replace(/%250D/g, "%0D");
HT_requestExampleLink.innerHTML = HT_requestExampleLinkText;
</script><a target="_blank" class="button" href="https://github.com/TwoTenPvP/MLAPI/blob/master/MLAPI/Data/NetId.cs" title="View the source code">View Source</a><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_MLAPI_Data_NetId.htm">NetId Structure</a></div><div class="seeAlsoStyle"><a href="N_MLAPI_Data.htm">MLAPI.Data Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More