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); }
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); }
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); }