public override void FixedUpdate(float fixedDeltaTime) { var position = StreamerManager.GetTilePosition(m_Position.x, m_Position.y, m_Position.z); m_Velocity += Physics.gravity * Time.fixedDeltaTime; var deltaPos = m_Velocity * Time.fixedDeltaTime; m_Position += deltaPos; m_TotalDis += deltaPos; if (m_BulletEntity != null) { m_BulletEntity.SetPosition(m_Position); m_BulletEntity.gameObject.transform.localScale = Vector3.one * m_TotalDis.magnitude * m_DisFactor; } RaycastHit hit; if (Physics.Raycast(position, deltaPos.normalized, out hit, deltaPos.magnitude, LayerConfig.BulletMask)) { if (onBulletHit != null) { onBulletHit(hit); } } }
public static void RegisterSceneLoadingCallBack(SceneLoadingProgressChangedEventHandler handler) { StreamerManager streamerManager = StreamerManager.Instance; if (streamerManager != null) { streamerManager.LoadingProgressChanged += new System.Action <double>(handler); } }
public static void NotifyPlayer(GameObject go) { StreamerManager streamerManager = StreamerManager.Instance; if (streamerManager != null) { streamerManager.SetPlayer(go.transform); } if (FarViewManager.Instance != null) { FarViewManager.Instance.Player = go.transform; } }
public static void RegisterSceneLoadedCallBack(SceneLoadedEventHandler handler) { StreamerManager streamerManager = StreamerManager.Instance; if (streamerManager != null) { streamerManager.SceneLoaded += new System.Action(handler); } else { handler.Invoke(); } }
public void VerifyLandedPos() { if (isClientVerify) { return; } Vector3 tilePos = StreamerManager.GetTilePosition(currentPos); RaycastHit hit; if (PhysicsUtility.Raycast(tilePos, Vector3.down, height, LayerConfig.ParachuteMask, out hit)) { isClientVerify = true; Vector3 hitRealpos = StreamerManager.GetRealPosition(hit.point); height = serverPos.y - hitRealpos.y; } }
public static void NotifyPosition(float x, float y, float z) { StreamerManager streamerManager = StreamerManager.Instance; if (streamerManager != null) { ms_PositionHelper.transform.position = GetTilePosition(x, y, z); if (streamerManager.HasObjectToMove(ms_PositionHelper.transform) == false) { streamerManager.AddObjectToMove(ms_PositionHelper.transform); } streamerManager.SetPlayer(ms_PositionHelper.transform); } if (FarViewManager.Instance != null) { FarViewManager.Instance.Player = ms_PositionHelper.transform; } }
/// <summary> /// 判断某个位置是否可以下车 /// </summary> /// <returns></returns> public bool CanGetDown(Vector3 pos) { Vector3 origin = transform.position; origin.y += 2.5f; pos = StreamerManager.GetTilePosition(pos.x, pos.y, pos.z); Vector3 drection = pos - origin; RaycastHit hit; if (Physics.Raycast(origin, drection.normalized, out hit, 20.0f, LayerConfig.WalkMask)) { if (hit.distance - drection.magnitude > 0.3f) { return(true); } return(false); } return(false); }
private void _processMessage(TOMessage to) { try { if (null != to) { QuickFix.Message msgQF = to.MensagemQF; string msgType = msgQF.Header.GetField(Tags.MsgType); int account = 0; string strAcc = string.Empty; #region Limit Validation // Atualizacao dos valores de limite, de acordo com o execution report if (this.CalcularLimite) { if (this.Config.Bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase)) { strAcc = msgQF.IsSetField(Tags.Account) ? msgQF.GetField(Tags.Account) : string.Empty; if (!string.IsNullOrEmpty(strAcc)) { account = Convert.ToInt32(strAcc.Remove(strAcc.Length - 1)); } else { account = 0; } } else { strAcc = msgQF.IsSetField(Tags.Account) ? msgQF.GetField(Tags.Account) : string.Empty; if (!string.IsNullOrEmpty(strAcc)) { account = Convert.ToInt32(strAcc); } else { account = 0; } } bool bProfileInst = false; LimitResponse retProfile = LimiteManager.LimitControl.GetInstance().VerifyInstitutionalProfile(account); if (0 != retProfile.ErrorCode) { bProfileInst = true; } if (msgType == MsgType.EXECUTION_REPORT && !bProfileInst) { // Validar o perfil instituicional QuickFix.FIX44.ExecutionReport er = (QuickFix.FIX44.ExecutionReport)msgQF; // Bovespa if (this.Config.Bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase)) { // BOVESPA decimal ultimoPreco = StreamerManager.GetInstance().GetLastPrice(er.Symbol.ToString()); if (Decimal.Zero != ultimoPreco) { LimitResponse ret = new LimitResponse(); decimal valorAlocado = er.OrderQty.getValue() * ultimoPreco; // Retirar o digito verificador string chaveAtual = er.ClOrdID.ToString() + "-" + strAcc + "-" + er.Symbol.ToString(); switch (er.OrdStatus.getValue()) { // Alocar limite da parte e contra parte case OrdStatus.NEW: case OrdStatus.REPLACED: case OrdStatus.CANCELED: { // Buscar o "new order" referencial para busca do TipoLimite // toOrder = this.Initiator.GetTOOrderSession(chaveAtual); if (null == to.Order) { logger.Info("RefOrder não encontrada (New): " + chaveAtual); } else { ret = LimiteManager.LimitControl.GetInstance().UpdateOperationalLimitBovespa(account, to.TipoLimite, valorAlocado, ultimoPreco, Convert.ToInt32(er.Side.ToString()), er.OrdStatus.getValue()); if (0 != ret.ErrorCode) { logger.Info("Erro na atualizacao do limite operacional Bovespa (New): " + ret.ErrorMessage); } } } break; // Atualizar a quantidade executada case OrdStatus.FILLED: case OrdStatus.PARTIALLY_FILLED: if (null != to.Order) { to.Order.CumQty = Convert.ToInt32(er.CumQty.getValue()); valorAlocado = er.CumQty.getValue() * ultimoPreco; ret = LimiteManager.LimitControl.GetInstance().UpdateOperationalLimitBovespa(account, to.TipoLimite, valorAlocado, ultimoPreco, Convert.ToInt32(er.Side.ToString()), er.OrdStatus.getValue()); if (0 != ret.ErrorCode) { logger.Info("Erro na atualizacao do limite operacional Bovespa (Filled / Partially Filled): " + ret.ErrorMessage); } } else { logger.Info("RefOrder não encontrada (New): " + chaveAtual); } break; } } else { string symbol = er.IsSetSymbol() ? er.Symbol.getValue() : string.Empty; logger.Info("Preco base (ultimo preco) zerado, ignorando o calculo do limite: " + symbol); } } //bmf else { // BMF // account = er.IsSetField(Tags.Account)? Convert.ToInt32(er.Account.getValue()): 0; LimitResponse ret = null; string side = er.Side.getValue() == '1' ? "C" : "V"; switch (er.OrdStatus.getValue()) { case OrdStatus.NEW: ret = LimiteManager.LimitControl.GetInstance() .UpdateOperationalLimitBMF(Convert.ToInt32(er.Account.getValue()), to.TipoLimite, er.Symbol.getValue(), Convert.ToInt32(er.OrderQty.getValue()), 0, side); break; case OrdStatus.REPLACED: { int qtdResult = (-1) * (to.Order.OrderQty - to.Order.CumQty); ret = LimiteManager.LimitControl.GetInstance() .UpdateOperationalLimitBMF(Convert.ToInt32(er.Account.getValue()), to.TipoLimite, er.Symbol.getValue(), qtdResult, Convert.ToInt32(er.OrderQty.getValue()), side); } break; case OrdStatus.CANCELED: { int qtdResult = (-1) * (to.Order.OrderQty - to.Order.CumQty); ret = LimiteManager.LimitControl.GetInstance() .UpdateOperationalLimitBMF(Convert.ToInt32(er.Account.getValue()), to.TipoLimite, er.Symbol.getValue(), qtdResult, 0, side); } break; // Atualizando a quantidade de case OrdStatus.FILLED: case OrdStatus.PARTIALLY_FILLED: if (null != to.Order) { to.Order.CumQty = Convert.ToInt32(er.CumQty.getValue()); } break; } } } } #endregion // Efetuar verificacao da integracao utilizada, para efetuar a conversao do switch (this.Config.IntegrationID) { case IntegrationId.BBG: this._sendMessageBBGIntegration(msgType, msgQF, to, account); break; case IntegrationId.GRD: case IntegrationId.IVF: default: this._sendDefaultMessageIntegration(msgQF, to, account); break; } } } catch (Exception ex) { logger.Error("_processMessage(): " + ex.Message, ex); } }
public static Vector3 GetRealPosition(float x, float y, float z) { return(StreamerManager.GetRealPosition(x, y, z)); }