public void Interpret(INetworkMediator netMediator, EndPoint sender, IMessage message) { var m = (UpdatePlayerMessage)message; IEngineFacade engine = (IEngineFacade)netMediator.EngineProxy; try { IUnityEntity e = engine.EntityRepository.Get(m.EntityId); var interpolator = e.OwnerGameObject.GetComponent <ICharacterInterpolater>(); Vector3 rot = e.OwnerGameObject.transform.eulerAngles; rot.y = m.RotationY; if (interpolator == null) { e.OwnerGameObject.transform.position = m.Position; e.OwnerGameObject.transform.eulerAngles = rot; } else { Vector3 camRot = interpolator.CameraTransform.localEulerAngles; camRot.x = m.RotationX; interpolator.UpdateInterpolation(m.Position, Quaternion.Euler(rot.x, rot.y, rot.z), Quaternion.Euler(camRot.x, camRot.y, camRot.z)); } } catch (EntityNotFoundException ex) { // TODO: This is getting called before the entity exists netMediator.EngineProxy.Logger.LogException(ex); } }
public void Interpret(INetworkMediator netMediator, EndPoint sender, IMessage message) { var msg = (SpawnEntityMessage)message; IEngineFacade engine = (IEngineFacade)netMediator.EngineProxy; EntitySpawnner.SpawnEntityFromMessage(engine, msg); }
private static GameObject SpawnGameObjectWithInfo(IEngineFacade engine, int prefabId, Vector3 pos, Quaternion rot, Vector3 scale) { var prefab = engine.PrefabManager.GetPrefabById(prefabId); Transform t = GameObject.Instantiate(prefab, pos, rot); t.localScale = scale; return(t.gameObject); }
private static IUnityEntity SetupNetworkEntity(IEngineFacade engine, GameObject go, int id, int prefabId) { var entity = go.gameObject.AddComponent <NetworkEntity>(); entity.Id = id; entity.PrefabId = prefabId; engine.EntityRepository.Add(entity); return(entity); }
public static async Task <TimeZoneResponse> QueryAsync(this IEngineFacade <TimeZoneRequest, TimeZoneResponse> engine, TimeZoneRequest request, TelemetryClient telemetryClient, CancellationToken cancellationToken = default) { request.Language = CultureInfo.CurrentUICulture.IetfLanguageTag; return(await QueryAsync(engine, request, telemetryClient, (telemetry, response) => { telemetry.Name = nameof(GoogleMaps.TimeZone); telemetry.Success = response.IsSuccess(); telemetry.ResultCode = response.Status.ToString(); }, cancellationToken)); }
private void Awake() { EngineFacade = FindObjectOfType <ForgeEngineFacade>(); if (EngineFacade == null) { throw new System.Exception($"Expected to find {typeof(ForgeEngineFacade)} in the scene but found nothing"); } HostButton.State = this; HostButton.Visible = true; ConnectButton.State = this; ConnectButton.Visible = true; }
public static async Task <TResponse> QueryAsync <TRequest, TResponse>(this IEngineFacade <TRequest, TResponse> engine, TRequest request, TelemetryClient telemetryClient, Action <DependencyTelemetry, TResponse> postProcessor = null, CancellationToken cancellationToken = default) where TRequest : MapsBaseRequest, new() where TResponse : IResponseFor <TRequest> { var uri = request.GetUri(); using (var op = telemetryClient.StartOperation(new DependencyTelemetry(nameof(GoogleMaps), uri.Host, engine.ToString(), uri.ToString()))) { var response = await engine.QueryAsync(request, cancellationToken); postProcessor?.Invoke(op.Telemetry, response); return(response); } }
public void Interpret(INetworkMediator netMediator, EndPoint sender, IMessage message) { var m = (CreatePlayerMessage)message; bool isMe = netMediator.SocketFacade.NetPlayerId.Equals(m.OwningPlayer); if (!isMe) { m.PrefabId = m.ProxyPrefabId; } IEngineFacade engine = (IEngineFacade)netMediator.EngineProxy; var e = EntitySpawner.SpawnEntityFromMessage(engine, m); onPlayerCreated?.Invoke(e, m.OwningPlayer); }
public void Initialize(Transform transform, Transform camTransform) { _transform = transform; _camTransform = camTransform; _engine = UnityExtensions.FindInterface <IEngineFacade>(); if (_engine == null) { throw new System.Exception("TODO: The network engine could not be found"); } var e = _transform.GetComponent <IUnityEntity>(); if (e == null) { throw new System.Exception("TODO: No network entity was found on this object"); } _entityId = e.Id; }
public static async Task <GeocodingResponse> QueryAsync(this IEngineFacade <GeocodingRequest, GeocodingResponse> engine, GeocodingRequest request, TelemetryClient telemetryClient, CancellationToken cancellationToken = default) { request.Language = CultureInfo.CurrentUICulture.IetfLanguageTag; return(await QueryAsync(engine, request, telemetryClient, (telemetry, response) => { telemetry.Name = nameof(GoogleMaps.Geocode); switch (response.Status) { case GoogleMapsApi.Entities.Geocoding.Response.Status.OK: case GoogleMapsApi.Entities.Geocoding.Response.Status.ZERO_RESULTS: telemetry.Success = true; break; default: telemetry.Success = false; break; } telemetry.ResultCode = response.Status.ToString(); }, cancellationToken)); }
public void Interpret(INetworkMediator netMediator, EndPoint sender, IMessage message) { var sceneEntities = GameObject.FindObjectsOfType <NetworkEntity>() as IUnityEntity[]; var m = (SendEntitiesToNewPlayerMessage)message; IEngineFacade engine = (IEngineFacade)netMediator.EngineProxy; for (int i = 0; i < m.EntityCount; i++) { if (string.IsNullOrEmpty(m.SceneIdentifiers[i])) { // Don't load an entity that already exists (from DontDestroyOnLoad) if (!engine.EntityRepository.Exists(m.Ids[i])) { EntitySpawner.SpawnEntityFromData(engine, m.Ids[i], m.PrefabIds[i], m.Positions[i], m.Rotations[i], m.Scales[i]); } } else { SetupEntityAlreadyInScene(sceneEntities, m, i, engine); } } }
public void Awake() { _engine = GameObject.FindObjectOfType <ForgeEngineFacade>(); _myName = _names[Random.Range(0, _names.Length)]; }
private void Start() { _engine = UnityExtensions.FindInterface <IEngineFacade>(); _puzzle = FindObjectOfType <ComplexSampleNetwork>(); }
private void Awake() { _engine = GameObject.FindObjectOfType <ForgeEngineFacade>(); }
private static void SetupEntityAlreadyInScene(IUnityEntity[] sceneEntities, SendEntitiesToNewPlayerMessage msg, int idx, IEngineFacade engine) { foreach (var e in sceneEntities) { if (e.SceneIdentifier == msg.SceneIdentifiers[idx]) { e.Id = msg.Ids[idx]; e.PrefabId = msg.PrefabIds[idx]; Transform t = e.OwnerGameObject.transform; t.position = msg.Positions[idx]; t.rotation = msg.Rotations[idx]; t.localScale = msg.Scales[idx]; engine.EntityRepository.Add(e); } } }
public static IUnityEntity SpawnEntityFromData(IEngineFacade engine, int id, int prefabId, Vector3 pos, Quaternion rot, Vector3 scale) { var go = SpawnGameObjectWithInfo(engine, prefabId, pos, rot, scale); return(SetupNetworkEntity(engine, go, id, prefabId)); }
private static GameObject SpawnGameObject(SpawnEntityMessage message, IEngineFacade engine) { return(SpawnGameObjectWithInfo(engine, message.PrefabId, message.Position, message.Rotation, message.Scale)); }
public static IUnityEntity SpawnEntityFromMessage(IEngineFacade engine, SpawnEntityMessage message) { GameObject go = SpawnGameObject(message, engine); return(SetupNetworkEntity(engine, go, message.Id, message.PrefabId)); }
/// <summary> /// Uses Facade and runs the engine /// </summary> public void Run() { this.engineFacade = EngineFacade.Instance(); this.engineFacade.Start(); }