Beispiel #1
0
	void Awake ()
	{
		myLife = GetComponent<AgentLife>();
		myMovement = GetComponent<AgentMovement>();

		agent = GetComponent<Agent>();
	}
 void Start()
 {
     my_agent   = GetComponent <AgentMovement>();
     all_agents = Object.FindObjectsOfType <AgentMovement>();
 }
Beispiel #3
0
 protected virtual void Awake()
 {
     agent = GetComponent <AgentMovement> ();
 }
Beispiel #4
0
 private void Awake()
 {
     _am = GetComponent <AgentMovement>();
 }
        public void UpdatesDirections()
        {
            NativeArray <float3>          directions = new NativeArray <float3>(1, Allocator.Persistent);
            NativeArray <AgentKinematics> agents     = new NativeArray <AgentKinematics>(1, Allocator.Persistent);

            agents[0] = new AgentKinematics()
            {
                position = Vector3.up
            };

            NativeArray <AgentBehaviors> active = new NativeArray <AgentBehaviors>(1, Allocator.Persistent);

            active[0] = AgentBehaviors.Seeking;

            NativeArray <byte> flowField      = new NativeArray <byte>(1, Allocator.Persistent);
            NativeArray <int3> flowDirections = new NativeArray <int3>(27, Allocator.Persistent);

            for (int i = 0; i < 1; i++)
            {
                flowField[i] = (byte)Direction3Int.Name.Up;
            }

            for (int i = 0; i < 27; i++)
            {
                Vector3Int dir = Direction3Int.Directions[i];
                flowDirections[i] = new int3(dir.x, dir.y, dir.z);
            }

            NativeArray <int>           agentMovementTypes = new NativeArray <int>(1, Allocator.Persistent);
            NativeArray <AgentMovement> movementTypes      = new NativeArray <AgentMovement>(1, Allocator.Persistent);

            movementTypes[0] = new AgentMovement()
            {
                mass = 1f, topSpeed = 1f, turnSpeed = 1f
            };

            AgentWorld world = new AgentWorld()
            {
                scale    = 1f,
                offset   = float3.zero,
                center   = new float3(0.5f, 0.5f, 0.5f),
                rotation = quaternion.identity,
            };

            FlowFieldSeekJob job = new FlowFieldSeekJob()
            {
                movementTypes = movementTypes,
                agentMovement = agentMovementTypes,

                world          = world,
                flowField      = flowField,
                flowDirections = flowDirections,
                flowFieldSize  = new int3(1, 1, 1),

                agents    = agents,
                steering  = directions,
                behaviors = active,
            };

            JobHandle handle = job.Schedule(1, 1);

            handle.Complete();

            Assert.AreEqual(new float3(0, 1, 0), directions[0]);

            flowDirections.Dispose();
            flowField.Dispose();
            directions.Dispose();
            agents.Dispose();
            active.Dispose();
            movementTypes.Dispose();
            agentMovementTypes.Dispose();
        }
Beispiel #6
0
        /// <summary>
        /// Constructor, setup callbacks for packets related to our avatar
        /// </summary>
        /// <param name="client">A reference to the <seealso cref="T:libsecondlife.SecondLife"/> Class</param>
        public AgentManager(SecondLife client)
        {
            Client = client;
            Movement = new AgentMovement(Client);
            NetworkManager.PacketCallback callback;

            Client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected);

            // Teleport callbacks
            callback = new NetworkManager.PacketCallback(TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportStart, callback);
            Client.Network.RegisterCallback(PacketType.TeleportProgress, callback);
            Client.Network.RegisterCallback(PacketType.TeleportFailed, callback);
            Client.Network.RegisterCallback(PacketType.TeleportFinish, callback);
            Client.Network.RegisterCallback(PacketType.TeleportCancel, callback);
            Client.Network.RegisterCallback(PacketType.TeleportLocal, callback);

            // Instant message callback
            Client.Network.RegisterCallback(PacketType.ImprovedInstantMessage, new NetworkManager.PacketCallback(InstantMessageHandler));
            // Chat callback
            Client.Network.RegisterCallback(PacketType.ChatFromSimulator, new NetworkManager.PacketCallback(ChatHandler));
            // Script dialog callback
            Client.Network.RegisterCallback(PacketType.ScriptDialog, new NetworkManager.PacketCallback(ScriptDialogHandler));
            // Script question callback
            Client.Network.RegisterCallback(PacketType.ScriptQuestion, new NetworkManager.PacketCallback(ScriptQuestionHandler));
            // Script URL callback
            Client.Network.RegisterCallback(PacketType.LoadURL, new NetworkManager.PacketCallback(LoadURLHandler));
            // Movement complete callback
            Client.Network.RegisterCallback(PacketType.AgentMovementComplete, new NetworkManager.PacketCallback(MovementCompleteHandler));
            // Health callback
            Client.Network.RegisterCallback(PacketType.HealthMessage, new NetworkManager.PacketCallback(HealthHandler));
            // Money callback
            Client.Network.RegisterCallback(PacketType.MoneyBalanceReply, new NetworkManager.PacketCallback(BalanceHandler));
			//Agent update callback
			Client.Network.RegisterCallback(PacketType.AgentDataUpdate, new NetworkManager.PacketCallback(AgentDataUpdateHandler));
            // Animation callback
            Client.Network.RegisterCallback(PacketType.AvatarAnimation, new NetworkManager.PacketCallback(AvatarAnimationHandler));
            // Object colliding into our agent callback
            Client.Network.RegisterCallback(PacketType.MeanCollisionAlert, new NetworkManager.PacketCallback(MeanCollisionAlertHandler));
            // Region Crossing
            Client.Network.RegisterCallback(PacketType.CrossedRegion, new NetworkManager.PacketCallback(CrossedRegionHandler));
	        // CAPS callbacks
            Client.Network.RegisterEventCallback("EstablishAgentCommunication", new Caps.EventQueueCallback(EstablishAgentCommunicationEventHandler));
            // Incoming Group Chat
            Client.Network.RegisterEventCallback("ChatterBoxInvitation", new Caps.EventQueueCallback(ChatterBoxInvitationHandler));
            // Outgoing Group Chat Reply
            Client.Network.RegisterEventCallback("ChatterBoxSessionEventReply", new Caps.EventQueueCallback(ChatterBoxSessionEventHandler));
            Client.Network.RegisterEventCallback("ChatterBoxSessionStartReply", new Caps.EventQueueCallback(ChatterBoxSessionStartReplyHandler));
            Client.Network.RegisterEventCallback("ChatterBoxSessionAgentListUpdates", new Caps.EventQueueCallback(ChatterBoxSessionAgentListReplyHandler));
            // Login
            Client.Network.RegisterLoginResponseCallback(new NetworkManager.LoginResponseCallback(Network_OnLoginResponse));
            // Alert Messages
            Client.Network.RegisterCallback(PacketType.AlertMessage, new NetworkManager.PacketCallback(AlertMessageHandler));

        }
    public void Initialise_Agent(Agent_Type type, int cont_num = 0)
    {
        /*if (type == Agent_Type.Player && cont_num == 0)
         * {
         *  throw new System.ArgumentException("Players cannot have a cont_num of 0: Initialise_Agent");
         * }*/
        // Initialise the AgentManager with all its default values based on type
        m_ControllerNumber = cont_num;
        m_StatCollector    = new StatCollector(this);
        m_Type             = type;
        //m_Powerup_State = null;
        switch (type)
        {
        case Agent_Type.Player:
            // Setup a player character
            m_Input            = new Controller_Input(m_ControllerNumber);
            m_Strength         = GLOBAL_VALUES.BASE_PLAYER_STRENGTH;
            m_MoveSpeed        = GLOBAL_VALUES.BASE_PLAYER_MOVEMENT_SPEED;
            m_RotateSpeed      = GLOBAL_VALUES.BASE_PLAYER_ROTATION_SPEED;
            m_Player_Nameplate = m_Instance.transform.Find("Player_Nameplate").gameObject;
            m_Player_Name_Text = m_Player_Nameplate.GetComponent <Text>();
            m_Instance.GetComponent <AgentAnimations>().m_manager = this;       // Set the Animation Manager
            m_Instance.GetComponent <AgentAnimations>().Setup();
            m_Instance.GetComponent <AgentAnimations>().AnimEvent_TrailStop();
            Hide_Name();
            //m_Powerup_State = new AgentPowerups(this);
            m_Instance.transform.Find("Pickup_Box").gameObject.GetComponent <PickupBox>().Add_Agent(this);
            m_BadgeAllocation = "WINDOW_SHOPPER_" + m_Player_Number;
            break;

        case Agent_Type.Base_AI:
            // Base AI are calm, rotate slowly and move at random speeds
            m_Input = new BaseAI_Control(null, this);
            int random_speed = (int)(UnityEngine.Random.Range(GLOBAL_VALUES.BASE_PLAYER_MOVEMENT_SPEED * 0.7f, GLOBAL_VALUES.BASE_PLAYER_MOVEMENT_SPEED * 1.2f));
            m_Strength    = GLOBAL_VALUES.BASE_PLAYER_STRENGTH;
            m_MoveSpeed   = random_speed;
            m_RotateSpeed = 10.0f;
            break;

        case Agent_Type.Large_AI:
            // Large AI move VERY slowly and rotate even slower
            m_Input       = new LargeAI_Control(null, this);
            m_Strength    = GLOBAL_VALUES.BASE_PLAYER_STRENGTH;
            m_MoveSpeed   = GLOBAL_VALUES.BASE_PLAYER_MOVEMENT_SPEED * 0.3f;
            m_RotateSpeed = 2.0f;
            break;

        case Agent_Type.Security_AI:
            // Stronger than normal, rest is average
            m_Input = new SecurityAI_Control(null, this);
            m_Instance.GetComponentInChildren <SecurityItemVision>().m_Manager = this;
            m_Instance.GetComponent <SecurityAnimations>().m_manager           = this; // Set the Animation Manager
            m_Instance.GetComponent <SecurityAnimations>().Setup();
            m_Strength    = GLOBAL_VALUES.BASE_PLAYER_STRENGTH * 1.1f;
            m_MoveSpeed   = GLOBAL_VALUES.BASE_PLAYER_MOVEMENT_SPEED * 0.9f;
            m_RotateSpeed = GLOBAL_VALUES.BASE_PLAYER_ROTATION_SPEED;
            break;

        default:
            // setup a none character
            m_Input = new Input_Methods(cont_num);
            break;
        }
        m_Round_Score        = 0;
        m_Round_Wins         = 0;
        m_Sound_Source       = m_Instance.GetComponent <AudioSource>();
        m_Body               = m_Instance.GetComponent <Rigidbody>();
        m_Collision_Detector = m_Instance.GetComponent <CollisionDetection>();
        m_Animator           = m_Instance.GetComponent <Animator>();
        m_State              = Agent_State.Active;
        m_Enabled_State      = Agent_Movement_State.Disabled;
        m_Animator.SetBool(GLOBAL_VALUES.ANIM_STUN_LOOP, false);
        m_Collision_Detector.Add_Manager(this);
        m_Actions  = new AgentActions(this, m_Input);
        m_Movement = new AgentMovement(this, m_Input);
        if (isPlayer())
        {
            // Players have extra things (UI and crown)
            GameObject StunCanvas   = m_Instance.transform.Find("StunCanvas").gameObject;
            GameObject StunDuration = StunCanvas.transform.Find("StunDuration").gameObject;
            m_UI_Stun = StunCanvas.GetComponent <StunIndicatorUI>();
            m_Crown   = m_Instance.transform.Find("Crown").gameObject;
            m_Crown.SetActive(false);
            m_Round_Score_Position = 0;
        }
        else
        {
            m_UI_Stun = null;
        }
        if (isPlayer() || isSecurityAI())
        {
            GetStunStars();
            SetStunStars(false);
        }
        m_punchImpact = m_Instance.transform.Find("Impact_Punch").gameObject;
        m_throwImpact = m_Instance.transform.Find("Impact_Throw").gameObject;
        m_dashImpact  = m_Instance.transform.Find("Impact_Dash").gameObject;
        m_Sound_Stun  = Resources.Load <AudioClip>(GLOBAL_VALUES.SOUND_PLAYER_HIT);

        /* FIX
         * //m_Effect_Impact = m_Instance.transform.Find("Impact").gameObject;
         * //m_Effect_Stun_Lights = m_Instance.transform.Find("Player_Stun").gameObject;
         */
    }
Beispiel #8
0
        public void UpdatesPositionAndRotation()
        {
            Transform[] transforms = new Transform[2];
            transforms[0] = GameObject.CreatePrimitive(PrimitiveType.Cube).transform;
            transforms[1] = GameObject.CreatePrimitive(PrimitiveType.Cube).transform;
            TransformAccessArray asyncTransforms = new TransformAccessArray(transforms);

            NativeArray <AgentKinematics> agents = new NativeArray <AgentKinematics>(2, Allocator.Persistent);

            agents[0] = new AgentKinematics()
            {
                maxSpeed = 1f
            };
            agents[1] = new AgentKinematics()
            {
                maxSpeed = 1f
            };

            NativeArray <float3> directions = new NativeArray <float3>(2, Allocator.Persistent);

            directions[0] = Vector3.right;
            directions[1] = Vector3.left;

            NativeArray <byte> flowField = new NativeArray <byte>(1, Allocator.Persistent);

            for (int i = 0; i < 1; i++)
            {
                flowField[i] = 1;
            }

            NativeArray <AgentBehaviors> active = new NativeArray <AgentBehaviors>(2, Allocator.Persistent);

            for (int i = 0; i < 2; i++)
            {
                active[i] = AgentBehaviors.Active;
            }

            NativeArray <int>           agentMovementTypes = new NativeArray <int>(2, Allocator.Persistent);
            NativeArray <AgentMovement> movementTypes      = new NativeArray <AgentMovement>(1, Allocator.Persistent);

            movementTypes[0] = new AgentMovement()
            {
                mass = 1f, topSpeed = 1f, turnSpeed = 1f
            };

            AgentWorld world = new AgentWorld()
            {
                scale    = 1f,
                offset   = float3.zero,
                center   = new float3(0.5f, 0.5f, 0.5f),
                rotation = quaternion.identity,
            };

            MoveAgentJob job = new MoveAgentJob()
            {
                maxForce = 1f,

                movementTypes = movementTypes,
                agentMovement = agentMovementTypes,

                agents    = agents,
                behaviors = active,
                steering  = directions,
                deltaTime = Time.deltaTime,

                world         = world,
                flowField     = flowField,
                flowFieldSize = new int3(1, 1, 1)
            };

            Vector3 position_0 = transforms[0].position;
            Vector3 position_1 = transforms[1].position;

            Quaternion rotation_0 = transforms[0].rotation;
            Quaternion rotation_1 = transforms[1].rotation;

            JobHandle handle = job.Schedule(asyncTransforms);

            handle.Complete();

            Assert.AreNotEqual(position_0, transforms[0].position);
            Assert.AreNotEqual(position_1, transforms[1].position);

            Assert.AreNotEqual(rotation_0, transforms[0].rotation);
            Assert.AreNotEqual(rotation_1, transforms[1].rotation);

            agents.Dispose();
            active.Dispose();
            flowField.Dispose();
            directions.Dispose();
            asyncTransforms.Dispose();

            agentMovementTypes.Dispose();
            movementTypes.Dispose();

            foreach (var t in transforms)
            {
                GameObject.DestroyImmediate(t.gameObject);
            }
        }
Beispiel #9
0
        /// <summary>
        /// Constructor, setup callbacks for packets related to our avatar
        /// </summary>
        /// <param name="client">A reference to the <seealso cref="T:OpenMetaverse.GridClient"/> Class</param>
        public AgentManager(LoggerInstance log, NetworkManager network, GridManager grid)
        {
            Log = log;
            Network = network;
            Grid = grid;
            Movement = new AgentMovement(Log, this, network);
            NetworkManager.PacketCallback callback;

            Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected);
            Network.OnCurrentSimChanged += new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged);
            // Teleport callbacks
            callback = new NetworkManager.PacketCallback(TeleportHandler);
            Network.RegisterCallback(PacketType.TeleportStart, callback);
            Network.RegisterCallback(PacketType.TeleportProgress, callback);
            Network.RegisterCallback(PacketType.TeleportFailed, callback);
            Network.RegisterCallback(PacketType.TeleportCancel, callback);
            Network.RegisterCallback(PacketType.TeleportLocal, callback);
            // these come in via the EventQueue
            Network.RegisterEventCallback("TeleportFailed", new Caps.EventQueueCallback(TeleportFailedEventHandler));
            Network.RegisterEventCallback("TeleportFinish", new Caps.EventQueueCallback(TeleportFinishEventHandler));

            // Upload cost callback:
            Network.RegisterCallback(Packets.PacketType.EconomyData, new NetworkManager.PacketCallback(EconomyDataHandler));
            // Instant message callback
            Network.RegisterCallback(PacketType.ImprovedInstantMessage, new NetworkManager.PacketCallback(InstantMessageHandler));
            // Chat callback
            Network.RegisterCallback(PacketType.ChatFromSimulator, new NetworkManager.PacketCallback(ChatHandler));
            // Script dialog callback
            Network.RegisterCallback(PacketType.ScriptDialog, new NetworkManager.PacketCallback(ScriptDialogHandler));
            // Script question callback
            Network.RegisterCallback(PacketType.ScriptQuestion, new NetworkManager.PacketCallback(ScriptQuestionHandler));
            // Script URL callback
            Network.RegisterCallback(PacketType.LoadURL, new NetworkManager.PacketCallback(LoadURLHandler));
            // Movement complete callback
            Network.RegisterCallback(PacketType.AgentMovementComplete, new NetworkManager.PacketCallback(MovementCompleteHandler));
            // Health callback
            Network.RegisterCallback(PacketType.HealthMessage, new NetworkManager.PacketCallback(HealthHandler));
            // Money callback
            Network.RegisterCallback(PacketType.MoneyBalanceReply, new NetworkManager.PacketCallback(BalanceHandler));
            //Agent update callback
            Network.RegisterCallback(PacketType.AgentDataUpdate, new NetworkManager.PacketCallback(AgentDataUpdateHandler));
            // Animation callback
            Network.RegisterCallback(PacketType.AvatarAnimation, new NetworkManager.PacketCallback(AvatarAnimationHandler));
            // Object colliding into our agent callback
            Network.RegisterCallback(PacketType.MeanCollisionAlert, new NetworkManager.PacketCallback(MeanCollisionAlertHandler));
            // Region Crossing
            Network.RegisterCallback(PacketType.CrossedRegion, new NetworkManager.PacketCallback(CrossedRegionHandler));
            Network.RegisterEventCallback("CrossedRegion", new Caps.EventQueueCallback(CrossedRegionEventHandler));
            // CAPS callbacks
            Network.RegisterEventCallback("EstablishAgentCommunication", new Caps.EventQueueCallback(EstablishAgentCommunicationEventHandler));
            // Incoming Group Chat
            Network.RegisterEventCallback("ChatterBoxInvitation", new Caps.EventQueueCallback(ChatterBoxInvitationEventHandler));
            // Outgoing Group Chat Reply
            Network.RegisterEventCallback("ChatterBoxSessionEventReply", new Caps.EventQueueCallback(ChatterBoxSessionEventReplyEventHandler));
            Network.RegisterEventCallback("ChatterBoxSessionStartReply", new Caps.EventQueueCallback(ChatterBoxSessionStartReplyEventHandler));
            Network.RegisterEventCallback("ChatterBoxSessionAgentListUpdates", new Caps.EventQueueCallback(ChatterBoxSessionAgentListUpdatesEventHandler));
            // Login
            Network.RegisterLoginResponseCallback(new NetworkManager.LoginResponseCallback(Network_OnLoginResponse));
            // Alert Messages
            Network.RegisterCallback(PacketType.AlertMessage, new NetworkManager.PacketCallback(AlertMessageHandler));
            // script control change messages, ie: when an in-world LSL script wants to take control of your agent.
            Network.RegisterCallback(PacketType.ScriptControlChange, new NetworkManager.PacketCallback(ScriptControlChangeHandler));
            // Camera Constraint (probably needs to move to AgentManagerCamera TODO:
            Network.RegisterCallback(PacketType.CameraConstraint, new NetworkManager.PacketCallback(CameraConstraintHandler));
            Network.RegisterCallback(PacketType.ScriptSensorReply, new NetworkManager.PacketCallback(ScriptSensorReplyHandler));
            Network.RegisterCallback(PacketType.AvatarSitResponse, new NetworkManager.PacketCallback(AvatarSitResponseHandler));
        }
Beispiel #10
0
 public int SortAgentPriority(AgentMovement a1, AgentMovement a2)
 {
     return(a1.movePriority.CompareTo(a2.movePriority));
 }
Beispiel #11
0
        /// <summary>
        /// Método construtor, instancia um novo agente.
        /// </summary>
        /// <param name="id">ID único do agente.</param>
        /// <param name="pos">Posição inicial do agente.</param>
        /// <param name="kind">
        /// Género inicial do agente (zombie ou humano).
        /// </param>
        /// <param name="movement">Tipo de movimento inicial do agente (por
        /// "inteligência artificial" ou controlado pelo jogador).
        /// </param>
        /// <param name="world">Referência ao mundo de simulação.</param>
        public Agent(int id, Coord pos,
                     AgentKind kind, AgentMovement movement, World world)
        {
            // Género dos agentes considerados inimigos do agente a ser criado
            AgentKind enemy;
            // Indica se o agente a ser criado deve fugir (true) ou não (false)
            // dos inimigos
            bool runaway;

            // Guardar as referências passadas no construtor
            ID         = id;
            Pos        = pos;
            Kind       = kind;
            Movement   = movement;
            this.world = world;

            // Adicionar o agente ao mundo de simulação
            world.AddAgent(this);

            // Definir género dos inimigos e se o agente deve ou não fugir
            // deles, dependendo do género de agente a ser criado
            switch (kind)
            {
            case AgentKind.Zombie:
                // Se agente for zombie os seus inimigos são humanos e
                // não deve fugir deles (antes pelo contrário)
                enemy   = AgentKind.Human;
                runaway = false;
                break;

            case AgentKind.Human:
                // Se agente for humando os seus inimigos são zombies e
                // deve fugir deles
                enemy   = AgentKind.Zombie;
                runaway = true;
                break;

            default:
                // Lançar uma exceção caso seja um género desconhecido de
                // agente
                throw new InvalidEnumArgumentException(
                          "Unknown agent kind");
            }

            // Definir classe concreta que define o movimento dos agentes
            switch (movement)
            {
            case AgentMovement.Player:
                // Movimento controlado pelo jogador
                moveBehavior = new PlayerMovement(world);
                break;

            case AgentMovement.AI:
                // Movimento controlado por IA
                moveBehavior = new AIMovement(enemy, runaway, world);
                break;

            default:
                // Movimento desconhecido, lançar exceção
                throw new InvalidEnumArgumentException(
                          "Unknown movement type");
            }
        }
Beispiel #12
0
 public void AddToDeclaredAgents(AgentMovement agentToAdd)
 {
     declaredAgents.Add(agentToAdd);
 }
Beispiel #13
0
 public void RemoveFromList(AgentMovement agentToRemove)
 {
     agentsOnLocation.Remove(agentToRemove);
 }
Beispiel #14
0
 public void AddToList(AgentMovement agentToAdd)
 {
     agentsOnLocation.Add(agentToAdd);
 }
Beispiel #15
0
 private void Awake()
 {
     _am       = GetComponent <AgentMovement>();
     _renderer = GetComponent <Renderer>();
     _scared   = Scared;
 }
Beispiel #16
0
        // Complete constructor
        public Settings(GameObject player, ref VoiceCommands voiceCommands, PlayerPhysics playerPhysics, ref CharacterController characterController, AgentMovement agentMovement,
                        ref NavMeshAgent navMeshAgent, float speed, float sens, Camera main, PlayerControls controls, PlayerUISetUp ui)
        {
            this.player              = player;
            this.voiceCommands       = voiceCommands;
            this.playerPhysics       = playerPhysics;
            this.characterController = characterController;
            this.agentMovement       = agentMovement;
            this.navMeshAgent        = navMeshAgent;
            playerUI = ui;

            playerControls = controls;

            // Other settings
            this.navMeshAgent.speed = speed;
            runSpeed    = speed;
            sensitivity = sens;
            cam         = main;
        }
Beispiel #17
0
        /// <summary>
        /// Constructor, setup callbacks for packets related to our avatar
        /// </summary>
        /// <param name="client"></param>
        public AgentManager(SecondLife client)
        {
            Client = client;
            Movement = new AgentMovement(Client);
            NetworkManager.PacketCallback callback;

            Client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected);

            // Teleport callbacks
            callback = new NetworkManager.PacketCallback(TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportStart, callback);
            Client.Network.RegisterCallback(PacketType.TeleportProgress, callback);
            Client.Network.RegisterCallback(PacketType.TeleportFailed, callback);
            Client.Network.RegisterCallback(PacketType.TeleportFinish, callback);
            Client.Network.RegisterCallback(PacketType.TeleportCancel, callback);
            Client.Network.RegisterCallback(PacketType.TeleportLocal, callback);

            // Instant Message callback
            Client.Network.RegisterCallback(PacketType.ImprovedInstantMessage, new NetworkManager.PacketCallback(InstantMessageHandler));
            // Chat callback
            Client.Network.RegisterCallback(PacketType.ChatFromSimulator, new NetworkManager.PacketCallback(ChatHandler));
            // Script dialog callback
            Client.Network.RegisterCallback(PacketType.ScriptDialog, new NetworkManager.PacketCallback(ScriptDialogHandler));
            // Script question callback
            Client.Network.RegisterCallback(PacketType.ScriptQuestion, new NetworkManager.PacketCallback(ScriptQuestionHandler));
            // Movement complete callback
            Client.Network.RegisterCallback(PacketType.AgentMovementComplete, new NetworkManager.PacketCallback(MovementCompleteHandler));
            // Health callback
            Client.Network.RegisterCallback(PacketType.HealthMessage, new NetworkManager.PacketCallback(HealthHandler));
            // Money callback
            Client.Network.RegisterCallback(PacketType.MoneyBalanceReply, new NetworkManager.PacketCallback(BalanceHandler));
			//Agent Update Callback
			Client.Network.RegisterCallback(PacketType.AgentDataUpdate, new NetworkManager.PacketCallback(AgentDataUpdateHandler));

	        // CAPS callbacks
            Client.Network.RegisterEventCallback("EstablishAgentCommunication", new Capabilities.EventQueueCallback(EstablishAgentCommunicationEventHandler));

            // Login
            Client.Network.RegisterLoginResponseCallback(new NetworkManager.LoginResponseCallback(Network_OnLoginResponse));
        }
Beispiel #18
0
 private void Start()
 {
     animator      = GetComponent <Animator>();
     agentMovement = GetComponent <AgentMovement>();
     island        = GameObject.FindGameObjectWithTag("island").GetComponent <Island>();
 }
Beispiel #19
0
        /// <summary>
        /// Constructor, setup callbacks for packets related to our avatar
        /// </summary>
        /// <param name="client">A reference to the <seealso cref="T:OpenMetaverse.GridClient"/> Class</param>
        public AgentManager(GridClient client)
        {
            Client = client;

            Movement = new AgentMovement(Client);

            Client.Network.Disconnected += Network_OnDisconnected;

            // Teleport callbacks            
            Client.Network.RegisterCallback(PacketType.TeleportStart, TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportProgress, TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportFailed, TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportCancel, TeleportHandler);
            Client.Network.RegisterCallback(PacketType.TeleportLocal, TeleportHandler);
            // these come in via the EventQueue
            Client.Network.RegisterEventCallback("TeleportFailed", new Caps.EventQueueCallback(TeleportFailedEventHandler));
            Client.Network.RegisterEventCallback("TeleportFinish", new Caps.EventQueueCallback(TeleportFinishEventHandler));

            // Instant message callback
            Client.Network.RegisterCallback(PacketType.ImprovedInstantMessage, InstantMessageHandler);
            // Chat callback
            Client.Network.RegisterCallback(PacketType.ChatFromSimulator, ChatHandler);
            // Script dialog callback
            Client.Network.RegisterCallback(PacketType.ScriptDialog, ScriptDialogHandler);
            // Script question callback
            Client.Network.RegisterCallback(PacketType.ScriptQuestion, ScriptQuestionHandler);
            // Script URL callback
            Client.Network.RegisterCallback(PacketType.LoadURL, LoadURLHandler);
            // Movement complete callback
            Client.Network.RegisterCallback(PacketType.AgentMovementComplete, MovementCompleteHandler);
            // Health callback
            Client.Network.RegisterCallback(PacketType.HealthMessage, HealthHandler);
            // Money callback
            Client.Network.RegisterCallback(PacketType.MoneyBalanceReply, MoneyBalanceReplyHandler);
            //Agent update callback
            Client.Network.RegisterCallback(PacketType.AgentDataUpdate, AgentDataUpdateHandler);
            // Animation callback
            Client.Network.RegisterCallback(PacketType.AvatarAnimation, AvatarAnimationHandler);
            // Object colliding into our agent callback
            Client.Network.RegisterCallback(PacketType.MeanCollisionAlert, MeanCollisionAlertHandler);
            // Region Crossing
            Client.Network.RegisterCallback(PacketType.CrossedRegion, CrossedRegionHandler);
            Client.Network.RegisterEventCallback("CrossedRegion", new Caps.EventQueueCallback(CrossedRegionEventHandler));
            // CAPS callbacks
            Client.Network.RegisterEventCallback("EstablishAgentCommunication", new Caps.EventQueueCallback(EstablishAgentCommunicationEventHandler));
            // Incoming Group Chat
            Client.Network.RegisterEventCallback("ChatterBoxInvitation", new Caps.EventQueueCallback(ChatterBoxInvitationEventHandler));
            // Outgoing Group Chat Reply
            Client.Network.RegisterEventCallback("ChatterBoxSessionEventReply", new Caps.EventQueueCallback(ChatterBoxSessionEventReplyEventHandler));
            Client.Network.RegisterEventCallback("ChatterBoxSessionStartReply", new Caps.EventQueueCallback(ChatterBoxSessionStartReplyEventHandler));
            Client.Network.RegisterEventCallback("ChatterBoxSessionAgentListUpdates", new Caps.EventQueueCallback(ChatterBoxSessionAgentListUpdatesEventHandler));
            // Login
            Client.Network.RegisterLoginResponseCallback(new NetworkManager.LoginResponseCallback(Network_OnLoginResponse));
            // Alert Messages
            Client.Network.RegisterCallback(PacketType.AlertMessage, AlertMessageHandler);
            // script control change messages, ie: when an in-world LSL script wants to take control of your agent.
            Client.Network.RegisterCallback(PacketType.ScriptControlChange, ScriptControlChangeHandler);
            // Camera Constraint (probably needs to move to AgentManagerCamera TODO:
            Client.Network.RegisterCallback(PacketType.CameraConstraint, CameraConstraintHandler);
            Client.Network.RegisterCallback(PacketType.ScriptSensorReply, ScriptSensorReplyHandler);
            Client.Network.RegisterCallback(PacketType.AvatarSitResponse, AvatarSitResponseHandler);
        }
 private void Start()
 {
     agentMovement = GetComponentInParent <AgentMovement>();
 }