Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        public static void RegisterSceneLoadingCallBack(SceneLoadingProgressChangedEventHandler handler)
        {
            StreamerManager streamerManager = StreamerManager.Instance;

            if (streamerManager != null)
            {
                streamerManager.LoadingProgressChanged += new System.Action <double>(handler);
            }
        }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
        public static void RegisterSceneLoadedCallBack(SceneLoadedEventHandler handler)
        {
            StreamerManager streamerManager = StreamerManager.Instance;

            if (streamerManager != null)
            {
                streamerManager.SceneLoaded += new System.Action(handler);
            }
            else
            {
                handler.Invoke();
            }
        }
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        /// <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);
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
 public static Vector3 GetRealPosition(float x, float y, float z)
 {
     return(StreamerManager.GetRealPosition(x, y, z));
 }