コード例 #1
0
    public bool CreateBulletUnit(BULLET_INFO BulletInfo, NkBattleChar pkSourceChar, NkBattleChar pkTargetchar, float fStartTime)
    {
        if (BulletInfo == null)
        {
            return(false);
        }
        if (pkSourceChar == null)
        {
            return(false);
        }
        if (pkTargetchar == null)
        {
            return(false);
        }
        this.m_BulletInfo = BulletInfo;
        this.m_SourceChar = pkSourceChar;
        this.m_TargetChar = pkTargetchar;
        this.m_fStartTime = fStartTime;
        if (this.m_SourceChar.CastedTarget.m_bDeadReaservation)
        {
            Debug.Log("Already Dead Char Request Bullet");
        }
        Vector3 vector  = Vector3.zero;
        Vector3 vector2 = Vector3.zero;
        Vector3 vector3 = Vector3.zero;

        if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_PASS)
        {
            BATTLE_POS_GRID battleGrid  = Battle.BATTLE.GetBattleGrid(pkSourceChar.Ally, pkSourceChar.GetStartPosIndex());
            BATTLE_POS_GRID battleGrid2 = Battle.BATTLE.GetBattleGrid(pkTargetchar.Ally, pkTargetchar.GetStartPosIndex());
            if (battleGrid == null)
            {
                return(false);
            }
            vector          = battleGrid.GetCenterBack();
            this.m_PosStart = vector;
            vector.y        = 0f;
            if (battleGrid2 == null)
            {
                return(false);
            }
            vector3             = battleGrid2.GetCenterBack();
            this.m_BulletPosEnd = vector3;
            vector3.y           = 0f;
            vector2             = pkTargetchar.GetCenterPosition();
            this.m_HitPosEnd    = vector2;
            vector2.y           = 0f;
        }
        else
        {
            vector              = pkSourceChar.GetShotPosition();
            this.m_PosStart     = vector;
            vector.y            = 0f;
            vector3             = pkTargetchar.GetCenterPosition();
            this.m_BulletPosEnd = vector3;
            vector3.y           = 0f;
            vector2             = pkTargetchar.GetCenterPosition();
            this.m_HitPosEnd    = vector2;
            vector2.y           = 0f;
        }
        float num  = Vector3.Distance(vector, vector3);
        float num2 = Vector3.Distance(vector, vector2);

        if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_LINE || this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_CURVE || this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_PASS)
        {
            if (this.m_BulletInfo.SPEED > 0f)
            {
                this.m_fBulletEndTime = fStartTime + num / this.m_BulletInfo.SPEED;
                this.m_fHitEndTime    = fStartTime + num2 / this.m_BulletInfo.SPEED;
            }
            else
            {
                this.m_fBulletEndTime = fStartTime;
                this.m_fHitEndTime    = fStartTime;
            }
            if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_CURVE)
            {
                this.m_BulletPosEnd = this.m_TargetChar.CastedTarget.GetCharPos();
                this.m_HitPosEnd    = this.m_TargetChar.CastedTarget.GetCharPos();
                this.calculateInitialVelocity();
            }
        }
        else if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_NONE)
        {
            this.m_fBulletEndTime = fStartTime;
            this.m_fHitEndTime    = fStartTime;
        }
        this.m_nEffectIndex = NrTSingleton <NkEffectManager> .Instance.AddEffect(this.m_BulletInfo.EFFECT_KIND, this.m_PosStart);

        this.m_EffectUnit = NrTSingleton <NkEffectManager> .Instance.GetEffectUnit(this.m_nEffectIndex);

        if (this.m_EffectUnit != null)
        {
            this.m_EffectUnit.CastedTarget.LifeTime = float.PositiveInfinity;
        }
        return(true);
    }