public override void Init(MyObjectBuilder_SessionComponent sessionComponent) { NetworkAPI.LogNetworkTraffic = false; Tools.DebugMode = true; IsNotificationInitialized = MyAPIGateway.Utilities.IsDedicated; if (!NetworkAPI.IsInitialized) { NetworkAPI.Init(ModId, ModName, ModKeyword); } NetSettings = new NetSync <Settings>(this, TransferType.ServerToClient, Settings.Static); NetSettings.ValueChangedByNetwork += UpdateSettings; //NetSettings.BeforeFetchRequestResponse += SettingsRequest; if (!MyAPIGateway.Session.IsServer) { NetworkAPI.Instance.RegisterChatCommand("load", (args) => NetworkAPI.Instance.SendCommand("load")); } else { NetworkAPI.Instance.RegisterNetworkCommand("load", ServerCallback_Load); NetworkAPI.Instance.RegisterChatCommand("load", (args) => { Settings.Load(); NetSettings.Value = Settings.Static; }); } Settings.Load(); NetSettings.Value = Settings.Static; }
//private Dictionary<string, Seat> seatsByCID; private void Awake() { seatsByGUID = new Dictionary <string, Seat>(); //seatsByCID = new Dictionary<string, Seat>(); foreach (Seat seat in seats) { NetSync ns = seat.GetComponent <NetSync>(); seatsByGUID.Add(ns.GUID, seat); } }
/// <summary> /// Called before update loop begins /// </summary> public virtual void Start() { WeaponDefinition = CubeBlock.BlockDefinition.Id; State = new NetSync <WeaponState>(ControlLayer, TransferType.Both, WeaponState.None); State.ValueChanged += StateChanged; Reloading = new NetSync <bool>(ControlLayer, TransferType.ServerToClient, false); DeviationIndex = new NetSync <sbyte>(ControlLayer, TransferType.ServerToClient, (sbyte)MyRandom.Instance.Next(0, sbyte.MaxValue)); InventoryComponent.GetOrAddComponent(CubeBlock.CubeGrid); Inventory = CubeBlock.GetInventory(); }
public override void Init(MyObjectBuilder_SessionComponent sessionComponent) { NetworkAPI.LogNetworkTraffic = true; if (!NetworkAPI.IsInitialized) { NetworkAPI.Init(ModId, ModName, ModKeyword); } MyLog.Default.WriteLine($"[Session Test] <InitializeSessionComponent>"); SessionTest = new NetSync <string>(this, TransferType.Both); }
// storage objects to avoid constant memory allocation and deallocation. e.g. "new" keyword abuse. void Awake() { netSync = GetComponent <NetSync>(); if (netSync == null) { Debug.LogWarning("Rigidbody2D must contain NetSync component to sync across network."); enabled = false; return; } doUpdate = false; syncEndPosition = transform.position; rb = GetComponent <UnityEngine.Rigidbody2D>(); }
public override void Init(MyObjectBuilder_EntityBase objectBuilder) { MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeGameLogicComponent>"); gamelogic = new NetSync <string>(this, TransferType.Both, string.Empty); MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeIMyEntity>"); imyentity = new NetSync <string>(Entity, TransferType.Both, string.Empty); MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeMyEntity>"); myentity = new NetSync <string>(Entity as MyEntity, TransferType.Both, string.Empty); sync = new NetSync <int>(this, TransferType.Both); serverToClient = new NetSync <float>(Entity as MyEntity, TransferType.ServerToClient); clientToServer = new NetSync <double>(Entity as MyEntity, TransferType.ClientToServer); NeedsUpdate |= VRage.ModAPI.MyEntityUpdateEnum.BEFORE_NEXT_FRAME; }
//public GameObject btn; // Use this for initialization void Start() { isReady = false; isConnected = false; opSelectedGeis = new ArrayList(); l = GameObject.Find("HUD").GetComponent <VersusUI>(); gen = GameObject.Find("Reader").GetComponent <NoteGenMan>(); audio = GameObject.Find("Audio Source").GetComponent <AudioSource>(); if (l.myDataSync == null || l.opDataSync == null) { ns = GameObject.FindGameObjectsWithTag("Syncs"); foreach (GameObject n in ns) { NetSync nv = n.GetComponent <NetSync>(); if (nv.isLocalPlayer) { l.myDataSync = nv; gen.myDataSync = nv; } else { l.opDataSync = nv; gen.opDataSync = nv; } } if (ns.Length == 2) { isConnected = true; l.DeactivitateInitPanel(); //l.ActivitateGeiPanel(); Time.timeScale = 1; l.ActivitateMe(); l.ActivitateOp(); audio.Play(); } } //btn.GetComponent<Button>().onClick.RemoveAllListeners(); score = 0; }
public override void Init(MyObjectBuilder_SessionComponent sessionComponent) { thrustTypeId = MyObjectBuilderType.ParseBackwardsCompatible("Thrust"); cockpitTypeId = MyObjectBuilderType.ParseBackwardsCompatible("Cockpit"); NetworkAPI.LogNetworkTraffic = false; if (!NetworkAPI.IsInitialized) { NetworkAPI.Init(ComId, ModName, CommandKeyword); } if (!RtsApiBackend.IsInitialized) { RtsApiBackend.Init(this); } cfg = new NetSync <Settings>(this, TransferType.ServerToClient, Settings.Load(), true, false); cfg.ValueChangedByNetwork += SettingChanged; Settings.Instance = cfg.Value; Network.RegisterChatCommand(string.Empty, Chat_Help); Network.RegisterChatCommand("help", Chat_Help); Network.RegisterChatCommand("hud", Chat_Hud); Network.RegisterChatCommand("config", Chat_Config); if (!MyAPIGateway.Multiplayer.IsServer) { Network.RegisterChatCommand("load", (args) => { Network.SendCommand("load"); }); } else { Network.RegisterNetworkCommand("load", ServerCallback_Load); Network.RegisterChatCommand("load", (args) => { cfg.Value = Settings.Load(); }); } MyLog.Default.Info("[RelativeTopSpeed] Starting."); MyAPIGateway.Entities.OnEntityAdd += AddGrid; MyAPIGateway.Entities.OnEntityRemove += RemoveGrid; }
/// <summary> /// Add a network variable to the NetworkedMonoBehavior to use /// </summary> /// <param name="getter">Variable to get</param> /// <param name="setter">Variable to set</param> protected void AddNetworkVariable(Func<object> getter, Action<object> setter, NetSync netSync = null, bool manualProperty = false, bool serverOnly = false) { if (IsSetup) throw new NetworkException(6, "Network variables can not be added after the Awake method of this MonoBehaviour"); Action callback = null; NetworkCallers callers = NetworkCallers.Everyone; NetSync.Interpolate useInterpolation = NetSync.Interpolate.True; if (netSync != null) { if (!string.IsNullOrEmpty(netSync.method)) { #if NETFX_CORE callback = () => { this.GetType().GetRuntimeMethod(netSync.method, null).Invoke(this, new object[] { }); }; #else callback = (Action)Delegate.CreateDelegate(typeof(Action), this, netSync.method); #endif } callers = netSync.callers; useInterpolation = netSync.interpolate; } if (manualProperty) ManualProperties.Add(new NetRef<object>(getter, setter, callback, callers, useInterpolation == NetSync.Interpolate.False)); else Properties.Add(new NetRef<object>(getter, setter, callback, callers, useInterpolation == NetSync.Interpolate.False, serverOnly)); }
public void Init(NetworkAPI net, NetSync <Settings> settings) { net.RegisterChatCommand("", OnHelp); net.RegisterChatCommand("help", OnHelp); net.RegisterChatCommand("debug", (args) => { switch (args) { case "on": OnToggleDebug?.Invoke(true); break; case "off": OnToggleDebug?.Invoke(false); break; default: Log.UI.Error($"Invalid argument to debug: '{args}'"); break; } }); net.RegisterChatCommand("config", (argsStr) => { try { Log.Game.Debug($"Got cmd: {argsStr}"); var first = argsStr.IndexOf(' '); if (first == -1) { first = argsStr.Length; } var arg = argsStr.Substring(0, first); Log.Game.Debug($"Arg: '{arg}'"); switch (arg) { case "add": case "remove": case "view": case "set": OnConfigEdit(argsStr); break; case "reload": if (!MyAPIGateway.Multiplayer.IsServer) { net.SendCommand(RELOAD_CONF_CMD); } else { OnConfigReloadServer(0, null, null, DateTime.MinValue); } break; case "save": if (!MyAPIGateway.Multiplayer.IsServer) { net.SendCommand(SAVE_CONF_CMD); } else { OnConfigSaveServer(0, null, null, DateTime.MinValue); } break; case "list": OnConfigList(); break; default: var msg = $"Unknown command: '{argsStr}'"; Log.Game.Error(msg); Log.UI.Error(msg); break; } } catch (Exception e) { Log.Game.Error(e); Log.UI.Error($"Failed to parse command: {e.Message}. This is a bug, please report it along with the contents of your log file"); } }); if (MyAPIGateway.Multiplayer.IsServer || MyAPIGateway.Utilities.IsDedicated) { net.RegisterNetworkCommand(RELOAD_CONF_CMD, OnConfigReloadServer); net.RegisterNetworkCommand(SAVE_CONF_CMD, OnConfigSaveServer); } net_settings_ = settings; }
/// <summary> /// Add a network variable to the NetworkedMonoBehavior to use /// </summary> /// <param name="getter">Variable to get</param> /// <param name="setter">Variable to set</param> protected void AddNetworkVariable(Func<object> getter, Action<object> setter, NetSync netSync = null) { if (IsSetup) throw new NetworkException(6, "Network variables can not be added after the Awake method of this MonoBehaviour"); if (Properties == null) Properties = new List<NetRef<object>>(); Action callback = null; NetworkCallers callers = NetworkCallers.Everyone; if (netSync != null) { if (!string.IsNullOrEmpty(netSync.method)) callback = (Action)Delegate.CreateDelegate(typeof(Action), this, netSync.method); callers = netSync.callers; } Properties.Add(new NetRef<object>(getter, setter, callback, callers)); }