Example #1
0
    // 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);
    }
Example #2
0
 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);
            }
        }