Exemplo n.º 1
0
    // Called when the state of the playable is set to Play
    public override void OnBehaviourPlay(Playable playable, FrameData info)
    {
        var isMainRole = RoleMgr.GetInstance().IsMainRoleEntity(Owner);

        // Debug.Log("cast skill behav isMainRole :"+isMainRole.ToString());
        if (isMainRole)
        {
            var trans = EntityMgr.GetComponentObject <Transform>(Owner);
            if (trans != null)
            {
                SprotoType.scene_cast_skill.request req = new SprotoType.scene_cast_skill.request();
                req.skill_id     = SkillID;
                req.cur_pos_x    = (long)(trans.localPosition.x * GameConst.RealToLogic);
                req.cur_pos_y    = (long)(trans.localPosition.y * GameConst.RealToLogic);
                req.cur_pos_z    = (long)(trans.localPosition.z * GameConst.RealToLogic);
                req.target_pos_x = (long)(trans.localPosition.x * GameConst.RealToLogic);
                req.target_pos_y = (long)(trans.localPosition.y * GameConst.RealToLogic);
                req.target_pos_z = (long)(trans.localPosition.z * GameConst.RealToLogic);
                req.direction    = (long)(trans.eulerAngles.y * GameConst.RealToLogic);
                // Debug.Log("req.direction : "+req.direction+" skillID "+SkillID);
                NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_cast_skill>(req, delegate(Sproto.SprotoTypeBase result){
                    SprotoType.scene_cast_skill.response ack = result as SprotoType.scene_cast_skill.response;
                    // Debug.Log("ack : "+(ack!=null).ToString());
                    if (ack == null)
                    {
                        return;
                    }
                    Debug.Log("scene_cast_skill ack.result : " + ack.result);
                    if (ack.result == 1)
                    {
                        XLuaFramework.CSLuaBridge.GetInstance().CallLuaFuncStr(GlobalEvents.MessageShow, "技能冷却中...");
                        return;
                    }
                    SkillManager.GetInstance().SetSkillCD((int)ack.skill_id, ack.cd_end_time);
                    // // Debug.Log("playable : "+(Playable.Equals(playable, Playable.Null)).ToString());
                    // var graph = PlayableExtensions.GetGraph(playable);
                    // // Debug.Log("graph.IsDone() : "+graph.IsDone().ToString());
                    // if (!graph.IsDone())
                    // {
                    //     var playableNum = graph.GetRootPlayableCount();
                    //     // Debug.Log("playableNum : "+playableNum);
                    //     for (int i = 0; i < playableNum; i++)
                    //     {
                    //         var rootPlayable = graph.GetRootPlayable(i);
                    //         FindFlyWord(rootPlayable, ack.fight_event.defenders, 0);
                    //     }
                    // }
                });
            }
        }
    }
Exemplo n.º 2
0
    protected override void OnUpdate()
    {
        if (Time.time - lastSynchTime < 0.05 || !GameVariable.IsNeedSynchSceneInfo)
        {
            return;
        }
        var  positions       = group.ToComponentArray <Transform>();
        var  targetPositions = group.ToComponentDataArray <TargetPosition>(Allocator.TempJob);
        var  synchInfos      = group.ToComponentDataArray <PosSynchInfo>(Allocator.TempJob);
        var  entities        = group.ToEntityArray(Allocator.TempJob);
        long synchTime       = System.DateTime.Now.Millisecond;

        for (int i = 0; i < targetPositions.Length; i++)
        {
            var targetPos          = targetPositions[i].Value;
            var pos                = positions[i].localPosition;
            var synchInfo          = synchInfos[i];
            var distance           = Vector3.Distance(targetPos, pos);
            var distance_with_last = Vector3.Distance(synchInfo.LastUploadPos, targetPos);
            // Debug.Log("distance:"+distance+" distance_with_last:"+distance_with_last+" upload pos"+pos.x+" "+pos.y+" "+pos.z);
            if (distance <= 0.5 && distance_with_last <= 0.5)
            {
                continue;
            }
            synchInfo.LastUploadPos = targetPos;
            // synchInfos[i] = synchInfo;
            EntityManager.SetComponentData <PosSynchInfo>(entities[i], synchInfo);
            scene_walk.request walk = new scene_walk.request();
            walk.start_x = (long)(pos.x * GameConst.RealToLogic);
            walk.start_y = (long)(pos.y * GameConst.RealToLogic);
            walk.start_z = (long)(pos.z * GameConst.RealToLogic);
            walk.end_x   = (long)(targetPos.x * GameConst.RealToLogic);
            // walk.end_y = (long)(targetPos.y*GameConst.RealToLogic);
            walk.end_z      = (long)(targetPos.z * GameConst.RealToLogic);
            walk.time       = synchTime;
            walk.jump_state = 0;
            NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_walk>(walk);
            lastSynchTime = Time.time;
        }
        entities.Dispose();
        targetPositions.Dispose();
        synchInfos.Dispose();
    }