Пример #1
0
    public static bool Play(ref U3D_Render.EntityView ev, int effectID, cmd_creature_skillview cmdInfo)
    {
        //光效开关
        if (!Initialize.Instance || !OptimitzedControlPlane.Instance.EnabledLightingEffect)
        {
            return(true);
        }

        LightEffectParam param = new LightEffectParam();

        param.nFeedbackID     = cmdInfo.nFeedBackID;
        param.bIsHero         = ev.IsHero;
        param.nSrcEntityID    = ev.ID;
        param.nTargetEntityID = cmdInfo.nTargetEntityID;
        param.srcObject       = ev.gameObject;
        param.nCreatorSide    = cmdInfo.nCreatorSide;
        if (cmdInfo.nSrcEntityID > 0)
        {
            param.nSrcEntityID = cmdInfo.nSrcEntityID;
            param.srcObject    = EntityFactory.getEntityGameObjectByID(cmdInfo.nSrcEntityID);
        }
        param.fDistance    = cmdInfo.fDistance;
        param.fAttackRange = cmdInfo.fAttackRange;
        param.speed        = cmdInfo.fPASD;
        if (cmdInfo.nTargetEntityID != 0)
        {
            param.targetObject = EntityFactory.getEntityGameObjectByID(cmdInfo.nTargetEntityID);
        }
        param.targetPos = new Vector3(cmdInfo.fTargetPos_x, cmdInfo.fTargetPos_y, cmdInfo.fTargetPos_z);
        if (cmdInfo.bFlyToTargetPos != 0)
        {
            param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.FlyToTargetPos;
        }

        param.sourcePos = new Vector3(cmdInfo.fSrcPos_x, cmdInfo.fSrcPos_y, cmdInfo.fSrcPos_z);
        if (cmdInfo.bFromSrcPos != 0)
        {
            param.nEffectFlag |= (int)LightEffectParam.EFFECT_FLAG.CustomSourcePos;
        }

        LightingEffectManager manager = ev.LightingEffectManager;

        if (manager == null)
        {
            return(false);
        }

        // 开始光效
        manager.AddLighting(effectID, param);

        // 输出光效信息
        if (manager.showLog)
        {
            Trace.Log("Add Lighting" + effectID + ". Entity Id=" + ev.ID + " SrcID=" + param.nSrcEntityID);
            Trace.Log("TargetID=" + cmdInfo.nTargetEntityID + ". TargetPos=(" + cmdInfo.fTargetPos_x + "," + cmdInfo.fTargetPos_y + "," + cmdInfo.fTargetPos_z + ").");
        }

        return(true);
    }
Пример #2
0
    public static bool Play(ref U3D_Render.EntityView ev, int effectID, int src, int dest, Vector3 toPos, float distance = .0f
                            , float range = .0f, float attackSpeed = 1.0f, int feedbackID = 0)
    {
        cmd_creature_skillview cmdInfo = new cmd_creature_skillview();

        cmdInfo.nSrcEntityID    = src;        // 攻击者EntityID
        cmdInfo.nTargetEntityID = dest;       // 受击者EntityID
        cmdInfo.nFeedBackID     = feedbackID; // 反馈ID,当发生碰撞时返回此ID(客户端做一些碰撞效果使用,暂时无用,先留着)
        cmdInfo.fTargetPos_x    = toPos.x;    // 目标坐标x
        cmdInfo.fTargetPos_y    = toPos.y;    // 目标坐标y
        cmdInfo.fTargetPos_z    = toPos.z;    // 目标坐标z

        cmdInfo.fDistance    = distance;      // 技能距离
        cmdInfo.fAttackRange = range;         // 攻击范围
        cmdInfo.fPASD        = attackSpeed;   // 攻击速度

        return(Play(ref ev, effectID, cmdInfo));
    }