示例#1
0
        protected override void _TriggerEnter(NetEntity entity)
        {
            if (!(entity is Human hu) ||
                !(hu.MovementController is ISurfControllable character) ||
                character.MoveType == MoveType.Noclip)
            {
                return;
            }

            character.MoveData.GravityFactor  = Gravity;
            GetOrCreateTimer(character).Timer = Duration;

            GravityTimer GetOrCreateTimer(ISurfControllable surfer)
            {
                foreach (var timer in _gravityTimers)
                {
                    if (timer.Surfer == surfer)
                    {
                        return(timer);
                    }
                }
                var result = new GravityTimer()
                {
                    Surfer = surfer
                };

                _gravityTimers.Add(result);
                return(result);
            }
        }
示例#2
0
 public override void OnExit(NetEntity entity)
 {
     if (null != entity)
     {
         entity.ExitIdle();
     }
 }
示例#3
0
文件: NPCControl.cs 项目: k3498gg/TSC
 //该方法用来改变有限状态机的状体,有限状态机基于当前的状态和通过的过渡状态。如果当前的状态没有用来通过的过度状态,则会抛出错误
 public void SetTransition(Transition t, NetEntity entity)
 {
     if (null != Fsm)
     {
         Fsm.SwitchTransition(t, entity);
     }
 }
示例#4
0
 public override void OnExit(NetEntity entity)
 {
     if (null != entity)
     {
         entity.ArpgAnimatContorller.Walk = false;
     }
 }
示例#5
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         entity.Dead();
     }
 }
示例#6
0
 private void SimpleMove(NetEntity entity)
 {
     if (null != entity)
     {
         entity.SimpleMove(AppConst.AIAcceSpeed);
     }
 }
示例#7
0
 void Crash(NetEntity entity)
 {
     if (null != entity)
     {
         entity.CharaController.SimpleMove(entity.HitDir.normalized * Time.deltaTime * entity.Attribute.Speed);
     }
 }
示例#8
0
        protected override void _TriggerEnter(NetEntity entity)
        {
            if (!(entity is Human hu) ||
                !(hu.MovementController is ISurfControllable character) ||
                character.MoveType == MoveType.Noclip)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(TargetActorName))
            {
                // todo: cache actors for efficient lookup
                var target = FindObjectsOfType <FSMActor>().FirstOrDefault(x => x.ActorName.Equals(TargetActorName, System.StringComparison.OrdinalIgnoreCase));
                if (target)
                {
                    character.MoveData.Origin = target.transform.position;
                    if (!DontRotate)
                    {
                        character.MoveData.ViewAngles = target.transform.rotation.eulerAngles;
                    }
                }
            }

            if (SetVelocityToZero)
            {
                character.MoveData.Velocity = Vector3.zero;

                if (!DontRotate)
                {
                    character.MoveData.BaseVelocity = Vector3.zero;
                }
            }
        }
        async Task Listen()
        {
            while (true)
            {
                var res = await udp.ReceiveAsync();

                var br = new BinaryReader(new MemoryStream(res.Buffer));
                if (player == null)
                {
                    player = NetEntity <Player> .Decode(br);

                    Canvas.Draw(player);
                }
                else
                {
                    var obj = NetEntity <GameObject> .Decode(br);

                    var idx = objects.FindIndex(x => x.ID == obj.ID);
                    if (idx == -1)
                    {
                        objects.Add(obj);
                    }
                    else
                    {
                        Canvas.Erase(objects[idx]);
                        objects[idx] = obj;
                    }
                    Canvas.Draw(obj);
                }
            }
        }
示例#10
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         entity.EnterIdle();
     }
 }
示例#11
0
        private void EnterEndZone(NetEntity ent)
        {
            if (!(ent is Human hu) ||
                !TryGetRunData(hu, out RunData runData) ||
                !runData.Track.Live)
            {
                return;
            }

            runData.Track.Stop();

            if (_trackType == FSMTrackType.Linear &&
                _linearData.Checkpoints.Length > 0 &&
                runData.Checkpoint != _linearData.Checkpoints.Length - 1)
            {
                Debug.LogError("Missed a checkpoint...");
                return;
            }

            if (_trackType == FSMTrackType.Staged &&
                _stageData.Stages.Length > 0 &&
                runData.Stage != _stageData.Stages.Length - 1)
            {
                Debug.LogError("Missed a stage...");
                return;
            }

            OnFinish?.Invoke(hu, runData.Track.CurrentFrame);
        }
示例#12
0
 public EntityFrame(NetEntity ent)
 {
     CurTime       = 0;
     UserCmdFields = new UserCmd.CmdFields();
     Position      = ent.Origin;
     Angles        = ent.Angles;
 }
        public void TestMake()
        {
            NetEntity enitiy = new NetEntity();

            enitiy.ConnectionID = 123456789;

            PlayerData data = new PlayerData();

            data.Name       = "Player yall";
            data.PrefabName = "Player";

            MakeEntity.AddComponent(enitiy, data);

            GameObject obj = new GameObject();

            obj.transform.position = new Vector3(Random.RandomRange(1, 25), Random.RandomRange(1, 25), Random.RandomRange(1, 25));

            obj.name = "a name yall";
            NetTransform trans = new NetTransform();

            trans.position.x = obj.transform.position.x;
            trans.position.y = obj.transform.position.y;
            trans.position.z = obj.transform.position.z;

            MakeEntity.AddComponent(enitiy, trans);



            NetTransform trans2 = MakeEntity.GetComponent <NetTransform>(enitiy);

            PlayerData playerData = MakeEntity.GetComponent <PlayerData>(enitiy);


            Debug.Log("Did it work?");
        }
示例#14
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         entity.ArpgAnimatContorller.Walk = true;
     }
 }
示例#15
0
 public override void OnExit(NetEntity entity)
 {
     if (null != entity)
     {
         m_enter_time = 0;
         entity.StopSkill();
     }
 }
示例#16
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         m_enter_time = 0;
         entity.SkillEvent();
     }
 }
示例#17
0
 //MouseButton right menue operation
 private void entityToolStripMenuItem_Click(object sender, EventArgs e)
 {
     VolumeGenerateCommon(() =>
     {
         comboBox1.Text = ".cs";
         CommonComponent(() => NetEntity.CreateCode(CreateInfoDic));
     });
 }
示例#18
0
 private void SimpleMove(NetEntity entity)
 {
     if (null != entity)
     {
         entity.SimpleMove(1);
         entity.ChaseTarget();
     }
 }
示例#19
0
 public void Load(NetEntity entity)
 {
     EntityId     = entity.EntityId;
     EntityTypeId = entity.TypeId;
     ChangedTick  = entity.ChangedTick;
     ChangedTime  = entity.ChangedTime;
     entity.GetPropData(out PropDataSize, out PropData);
 }
示例#20
0
 public override void OnExit(NetEntity entity)
 {
     if (null != entity)
     {
         entity.StopAccelerate();
         m_enter_time = 0;
     }
 }
示例#21
0
 public override void OnExit(NetEntity entity)
 {
     if (null != entity)
     {
         enter_time             = 0;
         entity.Attribute.Speed = entity.Attribute.BaseSpeed;
     }
 }
示例#22
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         enter_time             = 0;
         entity.Attribute.Speed = entity.Attribute.BaseSpeed * AppConst.CrashSpeed;
     }
 }
示例#23
0
 public override void OnExcute(NetEntity entity)
 {
     m_enter_time += Time.deltaTime;
     if (m_enter_time > m_end_time)
     {
         m_enter_time = 0;
         entity.EndCurrentStateToOtherState(StateID.Walk);
     }
 }
示例#24
0
 public override void OnEnter(NetEntity entity)
 {
     if (null != entity)
     {
         entity.Accelerate();
         m_enter_time = 0;
         m_end_time   = Random.Range(AppConst.AcctMinTime, AppConst.AcctMaxTime);
     }
 }
示例#25
0
 protected override void _TriggerEnter(NetEntity entity)
 {
     Debug.Log(entity.Game.IsHost);
     if (entity is Human hu &&
         hu.MovementController is DefaultMovementController mc)
     {
         hu.Velocity = SetVelocity;
     }
 }
示例#26
0
 public override void OnUpdate(NetEntity entity)
 {
     if (null != entity)
     {
         if (entity.IsAlive)
         {
             SimpleMove(entity);
             RandomDir(entity);
         }
     }
 }
    public static void JsonObject(Packet packet)
    {
        int id = packet.ReadInt();

        if (!GameManager.players.ContainsKey(id))
        {
            return;
        }

        string json = packet.ReadString();
        JsonSerializerSettings settings = new JsonSerializerSettings {
            TypeNameHandling = TypeNameHandling.All
        };
        NetEntity jsonObj = JsonConvert.DeserializeObject <NetEntity>(json, settings);

        if (jsonObj is NetAnimator)
        {
            GameManager.players[id].Animator.Set(jsonObj as NetAnimator);
            return;
        }
        if (jsonObj is BuildingData)
        {
            GameManager.instance.SpawnStructure(jsonObj as BuildingData);
            return;
        }
        if (jsonObj is NetItem)
        {
            NetItem netItem = jsonObj as NetItem;
            if (netItem is Netwearable)
            {
                Netwearable netWear = netItem as Netwearable;
                Wearable    wear    = new Wearable();
                wear.Initialize(netWear);
                GameManager.instance.ChangeInventory(id, wear);
            }
            if (netItem is NetHoldable)
            {
                NetHoldable netHold = netItem as NetHoldable;
                Holdable    hold    = new Holdable();
                hold.Initialize(netHold);
                GameManager.instance.ChangeInventory(id, hold);
            }
            return;
        }
        if (jsonObj is NetLoot)
        {
            NetLoot netLoot = jsonObj as NetLoot;
            GameManager.instance.CheckLoot(netLoot);
        }
        if (jsonObj is NetInventory)
        {
            Debug.Log("update inventory");
        }
    }
示例#28
0
 public IPlayer FindPlayer(NetEntity human)
 {
     for (int i = 0; i < Players.Count; i++)
     {
         if (Players[i].Entity == human)
         {
             return(Players[i]);
         }
     }
     return(null);
 }
示例#29
0
 public override void OnExcute(NetEntity entity)
 {
     if (null != entity)
     {
         m_enter_time += Time.deltaTime;
         if (m_enter_time > entity.GetSkillTime())
         {
             entity.SwitchOccp();
             //entity.EndCurrentStateToOtherState(StateID.Walk);
         }
     }
 }
示例#30
0
 public override void OnUpdate(NetEntity entity)
 {
     if (null != entity)
     {
         enter_time += Time.deltaTime;
         if (enter_time >= AppConst.CrashTime)
         {
             entity.EndCurrentStateToOtherState(StateID.Walk);
             return;
         }
         Crash(entity);
     }
 }