internal void AddNode(int count, Vector3 initPos) { if (IsDead) { return; } for (int i = 0; i < count; i++) { _ownerPlayer.snakerData.length++; SnakerNode node = new SnakerNode(); node.InitData(_data["Body"].IntValue, _ownerPlayer.snakerData.length, this, initPos); // add the new node to the previous pos of _tail. _tail.PrevNode.SetNextNode(node); node.SetNextNode(_tail); _tail.SetPrevNode(node); } }
public Snaker(PlayerData player, Vector3 initPos, float initSpeed = 0f) { _ownerPlayer = player; // load table _data = CSVTableLoader.GetTableContainer("Snaker").GetRow(player.snakerData.id.ToString()); _head = new SnakerHead(); _head.InitData(_data["Head"].IntValue, 0, this, initPos); _tail = new SnakerTail(); _tail.InitData(_data["Tail"].IntValue, 0, this, initPos); _head.SetNextNode(_tail); _tail.SetPrevNode(_head); _components = new List <SnakerComponent>(); if (_ownerPlayer.aiID > 0) { SnakerAI ai = new SnakerAI(this, _ownerPlayer.aiID); _components.Add(ai); } _isDead = false; // input _moveSpeed = initSpeed; _inputDirection = new Vector3(); _moveDirection = new Vector3(0f, 1f, 0f); enegy = 0; pre_length = -1; pre_count = 0; hitNode = null; // init snaker nodes AddNode(InitLength, initPos); }