// Start is called before the first frame update private void Awake() { controllerNum = -1; //By default set to a controller that does not exist. This should ensure the spawned player cannot move until assigned a specific controller //Init networked vars playerName = new NetworkedVar <string>(); playerName.Settings.WritePermission = NetworkedVarPermission.ServerOnly; playerName.OnValueChanged = updateName; playerNumber = new NetworkedVar <int>(); playerNumber.Settings.WritePermission = NetworkedVarPermission.ServerOnly; //playerNumber.OnValueChanged = UpdatePlayerNumber; facingForward = new NetworkedVar <bool>(); facingForward.Settings.WritePermission = NetworkedVarPermission.OwnerOnly; facingForward.OnValueChanged = updateFacingDirection; IsDead = new NetworkedVar <bool>(); IsDead.Settings.WritePermission = NetworkedVarPermission.OwnerOnly; IsDead.OnValueChanged = updateDeathStatus; anim = GetComponent <Animator>(); rb = GetComponent <Rigidbody2D>(); coll = GetComponent <collCheck>(); bc2d = GetComponent <BoxCollider2D>(); spriteRenderer = GetComponent <SpriteRenderer>(); IsDead.Value = false; arrow.SetActive(false); }
private void Start() { //Initialize NetworkedVar with desired permissions input = new NetworkedVar <Vector2>(new NetworkedVarSettings() { ReadPermission = NetworkedVarPermission.Everyone, WritePermission = NetworkedVarPermission.OwnerOnly }, Vector2.zero); }
void RenderNetworkedVarValueType <T>(int index) where T : struct { NetworkedVar <T> var = (NetworkedVar <T>)networkedVarFields[networkedVarNames[index]].GetValue(target); Type type = typeof(T); object val = var.Value; string name = networkedVarNames[index]; if (type == typeof(int)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(uint)) { val = EditorGUILayout.LongField(name, (long)val); } else if (type == typeof(short)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(ushort)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(sbyte)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(byte)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(long)) { val = EditorGUILayout.LongField(name, (long)val); } else if (type == typeof(ulong)) { val = EditorGUILayout.LongField(name, (long)val); } else if (type == typeof(bool)) { val = EditorGUILayout.Toggle(name, (bool)val); } else if (type == typeof(string)) { val = EditorGUILayout.TextField(name, (string)val); } else { EditorGUILayout.LabelField("Type not renderable"); } var.Value = (T)val; }
void Start() { syncedPosition = new NetworkedVar <Vector3>(); syncedPosition.Settings.WritePermission = NetworkedVarPermission.ServerOnly; syncedPosition.OnValueChanged = OnPositionChange; setChildrenState(true); if (GetComponent <NetworkedObject>().IsSpawned) { InvokeServerRpc(ResetOwnership); } }
void RenderNetworkedVar(int index) { if (!networkedVarFields.ContainsKey(networkedVarNames[index])) { serializedObject.Update(); SerializedProperty scriptProperty = serializedObject.FindProperty("m_Script"); if (scriptProperty == null) { return; } MonoScript targetScript = scriptProperty.objectReferenceValue as MonoScript; Init(targetScript); } object value = networkedVarFields[networkedVarNames[index]].GetValue(target); if (value == null) { Type fieldType = networkedVarFields[networkedVarNames[index]].FieldType; INetworkedVar var = (INetworkedVar)Activator.CreateInstance(fieldType, true); networkedVarFields[networkedVarNames[index]].SetValue(target, var); } Type type = networkedVarFields[networkedVarNames[index]].GetValue(target).GetType(); Type genericType = type.GetGenericArguments()[0]; EditorGUILayout.BeginHorizontal(); if (genericType == typeof(string)) { NetworkedVar <string> var = (NetworkedVar <string>)networkedVarFields[networkedVarNames[index]].GetValue(target); var.Value = EditorGUILayout.TextField(networkedVarNames[index], var.Value); } else if (genericType.IsValueType) { MethodInfo method = typeof(NetworkedBehaviourEditor).GetMethod("RenderNetworkedVarValueType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.NonPublic); MethodInfo genericMethod = method.MakeGenericMethod(genericType); genericMethod.Invoke(this, new object[] { (object)index }); } else { EditorGUILayout.LabelField("Type not renderable"); } GUILayout.Label(networkedVarLabelGuiContent, EditorStyles.miniLabel, GUILayout.Width(EditorStyles.miniLabel.CalcSize(networkedVarLabelGuiContent).x)); EditorGUILayout.EndHorizontal(); }
void RenderNetworkedVarValueType <T>(int index) where T : struct { NetworkedVar <T> var = (NetworkedVar <T>)networkedVarFields[networkedVarNames[index]].GetValue(target); Type type = typeof(T); object val = var.Value; string name = networkedVarNames[index]; if (NetworkingManager.Singleton != null && NetworkingManager.Singleton.IsListening) { if (type == typeof(int)) { val = EditorGUILayout.IntField(name, (int)val); } else if (type == typeof(uint)) { val = (uint)EditorGUILayout.LongField(name, (long)((uint)val)); } else if (type == typeof(short)) { val = (short)EditorGUILayout.IntField(name, (int)((short)val)); } else if (type == typeof(ushort)) { val = (ushort)EditorGUILayout.IntField(name, (int)((ushort)val)); } else if (type == typeof(sbyte)) { val = (sbyte)EditorGUILayout.IntField(name, (int)((sbyte)val)); } else if (type == typeof(byte)) { val = (byte)EditorGUILayout.IntField(name, (int)((byte)val)); } else if (type == typeof(long)) { val = EditorGUILayout.LongField(name, (long)val); } else if (type == typeof(ulong)) { val = (ulong)EditorGUILayout.LongField(name, (long)((ulong)val)); } else if (type == typeof(bool)) { val = EditorGUILayout.Toggle(name, (bool)val); } else if (type == typeof(string)) { val = EditorGUILayout.TextField(name, (string)val); } else if (type.IsEnum) { val = EditorGUILayout.EnumPopup(name, (Enum)val); } else { EditorGUILayout.LabelField("Type not renderable"); } var.Value = (T)val; } else { EditorGUILayout.LabelField(name, EditorStyles.wordWrappedLabel); EditorGUILayout.SelectableLabel(val.ToString(), EditorStyles.wordWrappedLabel); } }