// To be run on client public override void Process(NetMessage msg) { if (CustomNetworkManager.IsServer) { return; // Run extra logic for server, handled in ElectricalArc. } if (MatrixManager.IsInitialized == false) { return; } if (PlayerManager.LocalPlayer == null) { return; } if (NetworkClient.prefabs.TryGetValue(msg.prefabAssetID, out var prefab) == false) { Logger.LogError( $"Couldn't spawn {nameof(ElectricalArc)}; client doesn't know about this {nameof(msg.prefabAssetID)}: {msg.prefabAssetID}.", Category.Firearms); return; } var settings = new ElectricalArcSettings(prefab, msg.startObject, msg.endObject, msg.startPosition, msg.endPosition, msg.arcCount, msg.duration, msg.reachCheck, msg.addRandomness); new ElectricalArc().CreateArcs(settings); }
/// <summary> /// Sends a message to all clients, informing them to create an electrical arc with the given settings. /// </summary> public static NetMessage SendToAll(ElectricalArcSettings arcSettings) { if (arcSettings.arcEffectPrefab.TryGetComponent <NetworkIdentity>(out var identity) == false) { Logger.LogError( $"No {nameof(NetworkIdentity)} found on {arcSettings.arcEffectPrefab}!", Category.Electrical); return(default);
private void DoArcEffects() { foreach (var generator in connectedGenerator) { if (generator.Value.Item2 == false) { continue; } var settings = new ElectricalArcSettings(electricalArc, gameObject, generator.Value.Item1, arcOffSet, arcOffSet, 1, 1f, false, false); ElectricalArc.ServerCreateNetworkedArcs(settings); } }