Beispiel #1
0
    public void Create(UnitRow unitData, UserInfoRow user)
    {
        AgentRemote agentRemote = AgentPooling.GetItem(unitData.ID_Unit);

        if (agentRemote == null || user == null)
        {
            return;
        }
        else
        {
            agentRemote.Dispose();
            this.AddAgent(unitData.ID, agentRemote);

            LightweightLabel label = labelPooling.GetItem();
            agentRemote.transform.position = MapIns.CellToWorld(unitData.Position_Cell.Parse3Int().ToClientPosition());

            agentRemote.OnDead += delegate
            {
                AgentPooling.Release(agentRemote.Type, agentRemote);
                labelPooling.Release(label);

                MyAgentRemoteManager.Remove(agentRemote.AgentID);
                this.RemoveAgent(agentRemote.AgentID);
            };

            label.Initalize(agentRemote, MainCamera);
            bool isOwner = unitData.ID_User == PlayerInfo.Info.ID_User;

            agentRemote.Initalize(UnitTable, label, unitData, user, isOwner);

            if (isOwner)
            {
                if (agentRemote.NavAgent == null)
                {
                    agentRemote.gameObject.AddComponent <NavAgent>();
                }
                MyAgentRemoteManager.Add(agentRemote);
                agentRemote.name = "Owner " + unitData.ID;
            }
            else
            {
                agentRemote.name = "other " + unitData.ID;
            }
            agentRemote.gameObject.SetActive(true);
        }
    }