Пример #1
0
        protected override bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                int beginUnitId = m_BeginUnitId.Value;
                int endUnitId   = m_EndUnitId.Value;
                for (int unitId = beginUnitId; unitId <= endUnitId; ++unitId)
                {
                    EntityInfo entity = scene.SceneContext.GetEntityByUnitId(unitId);
                    if (null != entity && (!entity.IsDead() || entity.IsBorning))
                    {
                        Msg_RC_SendGfxMessage msg = new GameFrameworkMessage.Msg_RC_SendGfxMessage();
                        msg.name        = "GameRoot";
                        msg.msg         = "CameraFollow";
                        msg.is_with_tag = false;
                        Msg_RC_SendGfxMessage.EventArg arg = new Msg_RC_SendGfxMessage.EventArg();
                        arg.val_type = ArgType.INT;
                        arg.str_val  = entity.GetId().ToString();
                        msg.args.Add(arg);

                        if (m_HaveUserId)
                        {
                            int        userId = m_UserId.Value;
                            EntityInfo user   = scene.GetEntityById(userId);
                            if (null != user)
                            {
                                User us = user.CustomData as User;
                                if (null != us)
                                {
                                    us.SendMessage(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                                }
                            }
                        }
                        else
                        {
                            scene.NotifyAllUser(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                        }
                        break;
                    }
                }
            }
            return(false);
        }
Пример #2
0
        protected override bool ExecCommand(StoryInstance instance, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                ArkCrossEngineMessage.Msg_RC_SendGfxMessage msg = new ArkCrossEngineMessage.Msg_RC_SendGfxMessage();
                msg.is_with_tag = true;
                msg.name        = m_ObjTag.Value;
                msg.msg         = m_Msg.Value;
                foreach (StoryValue val in m_Args)
                {
                    ArkCrossEngineMessage.Msg_RC_SendGfxMessage.EventArg arg = new Msg_RC_SendGfxMessage.EventArg();
                    object v = val.Value;
                    if (null != v)
                    {
                        if (v is int)
                        {
                            arg.val_type = 1;
                        }
                        else if (v is float)
                        {
                            arg.val_type = 2;
                        }
                        else
                        {
                            arg.val_type = 3;
                        }
                        arg.str_val = v.ToString();
                    }
                    else
                    {
                        arg.val_type = 0;
                        arg.str_val  = "";
                    }
                    msg.args.Add(arg);
                }
                scene.NotifyAllUser(msg);
            }
            return(false);
        }
Пример #3
0
        protected override bool ExecCommand(StoryInstance instance, StoryMessageHandler handler, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                var obj = m_Arg.Value;
                if (obj.IsInteger)
                {
                    int        unitId = obj.Get <int>();
                    EntityInfo entity = scene.SceneContext.GetEntityByUnitId(unitId);
                    if (null != entity)
                    {
                        Vector3 pos = entity.GetMovementStateInfo().GetPosition3D();
                        Msg_RC_SendGfxMessage msg = new GameFrameworkMessage.Msg_RC_SendGfxMessage();
                        msg.name        = "GameRoot";
                        msg.msg         = "CameraLook";
                        msg.is_with_tag = false;
                        Msg_RC_SendGfxMessage.EventArg arg = new Msg_RC_SendGfxMessage.EventArg();
                        arg.val_type = ArgType.FLOAT;
                        arg.str_val  = pos.X.ToString();
                        msg.args.Add(arg);
                        arg.val_type = ArgType.FLOAT;
                        arg.str_val  = (pos.Y + entity.GetRadius()).ToString();
                        msg.args.Add(arg);
                        arg.val_type = ArgType.FLOAT;
                        arg.str_val  = pos.Z.ToString();
                        msg.args.Add(arg);

                        if (m_HaveUserId)
                        {
                            int        userId = m_UserId.Value;
                            EntityInfo user   = scene.GetEntityById(userId);
                            if (null != user)
                            {
                                User us = user.CustomData as User;
                                if (null != us)
                                {
                                    us.SendMessage(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                                }
                            }
                        }
                        else
                        {
                            scene.NotifyAllUser(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                        }
                    }
                }
                else
                {
                    Vector3 pos = obj.Get <Vector3>();
                    Msg_RC_SendGfxMessage msg = new GameFrameworkMessage.Msg_RC_SendGfxMessage();
                    msg.name        = "GameRoot";
                    msg.msg         = "CameraLook";
                    msg.is_with_tag = false;
                    Msg_RC_SendGfxMessage.EventArg arg = new Msg_RC_SendGfxMessage.EventArg();
                    arg.val_type = ArgType.FLOAT;
                    arg.str_val  = pos.X.ToString();
                    msg.args.Add(arg);
                    arg.val_type = ArgType.FLOAT;
                    arg.str_val  = pos.Y.ToString();
                    msg.args.Add(arg);
                    arg.val_type = ArgType.FLOAT;
                    arg.str_val  = pos.Z.ToString();
                    msg.args.Add(arg);

                    if (m_HaveUserId)
                    {
                        int        userId = m_UserId.Value;
                        EntityInfo user   = scene.GetEntityById(userId);
                        if (null != user)
                        {
                            User us = user.CustomData as User;
                            if (null != us)
                            {
                                us.SendMessage(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                            }
                        }
                    }
                    else
                    {
                        scene.NotifyAllUser(RoomMessageDefine.Msg_RC_SendGfxMessage, msg);
                    }
                }
            }
            return(false);
        }