void ColorChanged(EventInfo eventInfo)
    {
        ColorEventInfo info = (ColorEventInfo)eventInfo;
        currentColor = info.newColor;

        SetCurrentMaterials();
    }
示例#2
0
        protected override IEnumerator<object> OnPreferencesChanged(EventInfo evt, string[] prefNames)
        {
            string prefsJson = null;
            yield return Preferences.GetAllJson().Bind(() => prefsJson);

            yield return CallFunction("weaponhelper", "notifyPrefsChanged", prefsJson);
        }
示例#3
0
        public void EventReceivedHandler(object sender, EventInfo eventInfo)
        {
            if (eventInfo.Type == EventInfo.EventTypes.TAG_REPORT)
            {
                var tagid = eventInfo.GetParameter(EventInfo.EventTagReportParams.TagId);
                var antenna = eventInfo.GetParameter(EventInfo.EventTagReportParams.Antenna);
                var time = eventInfo.GetParameter(EventInfo.EventTagReportParams.Time);
                var phase = eventInfo.GetParameter(EventInfo.EventTagReportParams.Phase);
                var frequency = eventInfo.GetParameter(EventInfo.EventTagReportParams.Frequency);
                var rssi = eventInfo.GetParameter(EventInfo.EventTagReportParams.Rssi);

                var phaseAngle = _phaseUtils.PhaseAngle(phase);

                if (tagid != null)
                {
                    var reading = new Reading
                    {
                        TagId = tagid,
                        Antenna = antenna,
                        PhaseAngle = phaseAngle,
                        Frequency = frequency,
                        Rssi = rssi,
                        Time = time
                    };

                    //Console.WriteLine(reading);
                    Readings.Add(reading);
                }
            }
        }
示例#4
0
		public override EventInfo[] __GetDeclaredEvents()
		{
			foreach (int i in module.EventMap.Filter(this.MetadataToken))
			{
				int evt = module.EventMap.records[i].EventList - 1;
				int end = module.EventMap.records.Length > i + 1 ? module.EventMap.records[i + 1].EventList - 1 : module.Event.records.Length;
				EventInfo[] events = new EventInfo[end - evt];
				if (module.EventPtr.RowCount == 0)
				{
					for (int j = 0; evt < end; evt++, j++)
					{
						events[j] = new EventInfoImpl(module, this, evt);
					}
				}
				else
				{
					for (int j = 0; evt < end; evt++, j++)
					{
						events[j] = new EventInfoImpl(module, this, module.EventPtr.records[evt] - 1);
					}
				}
				return events;
			}
			return Empty<EventInfo>.Array;
		}
示例#5
0
		public override EventInfo[] __GetDeclaredEvents()
		{
			int token = this.MetadataToken;
			// TODO use binary search?
			for (int i = 0; i < module.EventMap.records.Length; i++)
			{
				if (module.EventMap.records[i].Parent == token)
				{
					int evt = module.EventMap.records[i].EventList - 1;
					int end = module.EventMap.records.Length > i + 1 ? module.EventMap.records[i + 1].EventList - 1 : module.Event.records.Length;
					EventInfo[] events = new EventInfo[end - evt];
					if (module.EventPtr.RowCount == 0)
					{
						for (int j = 0; evt < end; evt++, j++)
						{
							events[j] = new EventInfoImpl(module, this, evt);
						}
					}
					else
					{
						for (int j = 0; evt < end; evt++, j++)
						{
							events[j] = new EventInfoImpl(module, this, module.EventPtr.records[evt] - 1);
						}
					}
					return events;
				}
			}
			return Empty<EventInfo>.Array;
		}
示例#6
0
    private void BroadcastStateChange(EventInfo eventInfo)
    {
        Debug.Log ("Broadcasting state change.");

        foreach (ScreenController screenController in screenControllers) {
            screenController.MatchStateChanged (eventInfo);
        }
    }
示例#7
0
        protected override IEnumerator<object> OnPreferencesChanged(EventInfo evt, string[] prefNames)
        {
            long fontScale = 100, fontWidth = 100;
            yield return Preferences.Get<long>("FontScale").Bind(() => fontScale);
            yield return Preferences.Get<long>("FontWidth").Bind(() => fontWidth);

            yield return CallFunction("fontsizer", "setFontSize", fontScale / 100.0f, fontWidth / 100.0f);
        }
    public void PlayerDied(EventInfo eventInfo)
    {
        PlayerController playerController = ((PlayerSpawnedEventInfo)eventInfo).player;

        switch (playerController.Id)
        {
            case 1: target1 = null; break;
            case 2: target2 = null; break;
        }
    }
示例#9
0
            /// <summary>
            /// Creates an event handler for the specified event
            /// </summary>
            /// <param Name="Info">The event info class of the event</param>
            /// <returns>The created event handler help class.</returns>
            public object GetEventHandler(EventInfo Info)
            {
                Type eventHandlerType = emitter.GetEventHandlerType(Info);

                // Call constructor of event handler type to create event handler
                ConstructorInfo myCtor = eventHandlerType.GetConstructor(new Type[] { typeof(EventInfo) });
                object[] ctorArgs = new object[] { Info };
                object eventHandler = myCtor.Invoke(ctorArgs);

                return eventHandler;
            }
示例#10
0
 //Test function
 void ColorChanged(EventInfo eventInfo)
 {
     switch (((ColorEventInfo)eventInfo).newColor)
     {
         case ChromaColor.RED: RenderSettings.skybox.SetColor("_Tint", Color.red); break;
         case ChromaColor.GREEN: RenderSettings.skybox.SetColor("_Tint", Color.green); break;
         case ChromaColor.BLUE: RenderSettings.skybox.SetColor("_Tint", Color.blue); break;
         case ChromaColor.YELLOW: RenderSettings.skybox.SetColor("_Tint", Color.yellow); break;
     }
     
 }
示例#11
0
        // ReSharper disable InconsistentNaming
        public void TaskSheduler_ResourceHistory_ShouldConstructCorrectly()
        // ReSharper restore InconsistentNaming
        {
            var a = new List<IDebugState>();
            var b = new EventInfo(new DateTime(2001, 01, 01), new TimeSpan(1, 0, 0), new DateTime(2001, 01, 01), ScheduleRunStatus.Error, "sdf");
            var res = new ResourceHistory("output", a, b, "bob");
            Assert.AreEqual(a, res.DebugOutput);
            Assert.AreEqual(b, res.TaskHistoryOutput);
            Assert.AreEqual("bob", res.UserName);

        }
示例#12
0
 /// <summary>
 /// Emits dynamically a event handler with a given signature, which fills all arguments of the event in an object array 
 /// and calls a common event.
 /// </summary>
 /// <returns></returns>
 public Type GetEventHandlerType(EventInfo Info)
 {
     string handlerName = assemblyName + Info.Name;
     Type tpEventHandler = (Type)handlerTypes[handlerName];
     if (tpEventHandler == null)
     {
     // Create the type
     tpEventHandler = EmitHelperClass(handlerName, Info);
     handlerTypes.Add(handlerName, tpEventHandler);
     }
     return tpEventHandler;
 }
        public void TestMethod1()
        {
            EventInfo eventinfo = new EventInfo();
            eventinfo.Name = "1";
            eventinfo.Root = "helo";
            eventinfo.Description = "helloo";
            eventinfo.Save();

            eventinfo = EventInfo.Load(1);

            eventinfo.DeleteOnSave();
        }
示例#14
0
 public static string ArrayToCommaList(EventInfo[] ArrayToConvert)
 {
     string returnString = "";
     if (ArrayToConvert.Length > 0)
     {
         returnString = ArrayToConvert[0].ToString();
         for (int i = 1; i < ArrayToConvert.Length; i++)
         {
             returnString += ", " + ArrayToConvert[i].ToString();
         }
     }
     return returnString;
 }
        public void TaskSheduler_EventInfo_ShouldconstructCorrectly()
        {

            EventInfo ie = new EventInfo(new DateTime(2000, 1, 1), TimeSpan.MaxValue, new DateTime(2001, 1, 1),ScheduleRunStatus.Error, 
                                         "12345");
            Assert.AreEqual(new DateTime(2000, 1, 1), ie.StartDate);
            Assert.AreEqual(new DateTime(2001, 1, 1), ie.EndDate);
            Assert.AreEqual(TimeSpan.MaxValue, ie.Duration);
            Assert.AreEqual(ScheduleRunStatus.Error, ie.Success);
            Assert.AreEqual("12345", ie.EventId);


        }
示例#16
0
 public STElementInfo(JSONNode stJson)
 {
     string spriteName = stJson["sprite"];
     m_alwaysSeen = stJson["doShow"].AsBool;
     JSONNode color = stJson["color"];
     Color col = Color.white;
     if(color != null) {
         col = new Color(color["r"].AsFloat, color["g"].AsFloat, color["b"].AsFloat);
     }
     m_spriteName = spriteName;
     m_spriteColor = col;
     m_eventInfo = new EventInfo(stJson);
 }
示例#17
0
文件: Event.cs 项目: roaet/LD28
 public void LoadEventInfo(MobManager mobManager, Storytrack storyTrack, EventInfo info)
 {
     ClearMobs();
     m_st = storyTrack;
     m_info = info;
     foreach(string mobName in m_info.mobs) {
         MobInfo mobInfo = mobManager.GetMobByName(mobName);
         Mob mob = CreateMob(mobInfo, transform.position);
         if(mob == null) continue;
         m_mobs.Add(mob);
     }
     MoveMobsToSpawns();
 }
示例#18
0
	private Delegate GetEventHandler(EventInfo ei, Type eaType, string fieldToAssign)
	{
		ParameterExpression senderParam = Expression.Parameter(typeof(object), "sender");
		ParameterExpression eventArgsParam = Expression.Parameter(eaType, "e");
		Delegate handler = Expression.Lambda(ei.EventHandlerType,
			Expression.Assign(
				Expression.Field(Expression.Constant(this), this.GetType().GetField(fieldToAssign)),
				Expression.Property(eventArgsParam, eaType.GetProperty("Value").GetGetMethod())
			),
			senderParam,
			eventArgsParam
		).Compile();
		return handler;
	}
示例#19
0
        public void AddEventHandler_RemoveEventHandler(EventInfo eventInfo, EI_Class target, Delegate handler, int expectedStaticVariable)
        {
            // Add and make sure we bound the event.
            eventInfo.AddEventHandler(target, handler);
            target?.InvokeAllEvents();
            EI_Class.InvokeStaticEvent();
            Assert.Equal(expectedStaticVariable, EI_Class.AddEventHandler_RemoveEventHandler_Test_TrackingVariable);
            EI_Class.AddEventHandler_RemoveEventHandler_Test_TrackingVariable = 0; // Reset

            // Remove and make sure we unbound the event.
            eventInfo.RemoveEventHandler(target, handler);
            target?.InvokeAllEvents();
            EI_Class.InvokeStaticEvent();
            Assert.Equal(0, EI_Class.AddEventHandler_RemoveEventHandler_Test_TrackingVariable);
        }
示例#20
0
        private void AddEventInfo_Click(object sender, RoutedEventArgs e)
        {
            EventInfo p = new EventInfo();

            if (p.ShowDialog().Value)
            {
                Event AddEvent = new Event();
                AddEvent.EventName = p.EName.Text;
                AddEvent.EventCost = Decimal.Parse(p.ECost.Text);
                AddEvent.UserID = userId;
                infoContext.Events.AddObject(AddEvent);
                saveMeToDataBase();
                fetchUserData(infoContext);
            }
        }
        private IEnumerable<IEventInfo> GetEventInfosBase(TimeLineVisualizationState state, int index, HierarchicalItem hierarchicalItem)
        {
            var dateRange = hierarchicalItem.SourceItem as IDateRange;
            var roundedRange = state.Rounder.Round(dateRange);
            var taskRange = new Range<long>(roundedRange.Start.Ticks, roundedRange.End.Ticks);

            if (taskRange.IntersectsWith(state.VisibleTimeRange))
            {
                var eventInfo = new EventInfo(taskRange, index, 1, new Range<int>(0), IsSummary(hierarchicalItem.SourceItem), IsMilestone(hierarchicalItem.SourceItem))
                {
                    OriginalEvent = hierarchicalItem.SourceItem
                };

                yield return eventInfo;
            }
        }
示例#22
0
 static Delegate GetHandler(Type componentType, EventInfo eventInfo)
 {
     var handlerType = eventInfo.EventHandlerType;
     var eventName = eventInfo.Name;
     var key = new EventKey(componentType, handlerType, eventName);
     var handler = (Delegate)null;
     if (!_eventHandlers.TryGetValue(key, out handler))
     {
         var parameters = handlerType.GetMethod("Invoke")
             .GetParameters()
             .Select(p => Expression.Parameter(p.ParameterType, p.Name))
             .ToArray();
         var formatStringBuilder = new StringBuilder();
         formatStringBuilder.AppendFormat(
             "<b>{0}[</b><color=navy>{{0}}</color><b>]</b>.<color=purple>{1}</color>",
             componentType.Name, eventName);
         if (parameters.Length > 0)
         {
             formatStringBuilder.Append(": ");
         }
         for (int i = 0; i < parameters.Length; ++i)
         {
             formatStringBuilder.AppendFormat(
                 "[<color=blue>{0} = {{{1}}}</color>] ",
                 parameters[i].Name, i + 1);
         }
         var method = typeof(EventLogger).GetMethod("LogFormat",
             BindingFlags.Public | BindingFlags.Static,
             null,
             new[] { typeof(string), typeof(string), typeof(object[]) },
             null);
         var nameArg = Expression.Parameter(typeof(string), "gameObjectName");
         var lambda = Expression.Lambda(
             Expression.Lambda(handlerType,
                 Expression.Call(method,
                     Expression.Constant(formatStringBuilder.ToString()),
                     nameArg,
                     Expression.NewArrayInit(typeof(object),
                         parameters.Select(p =>
                             Expression.Convert(p, typeof(object))).ToArray())),
                 parameters),
             nameArg);
         handler = lambda.Compile();
         _eventHandlers[key] = handler;
     }
     return handler;
 }
    public void PlayerSpawned(EventInfo eventInfo)
    {
        PlayerController playerController = ((PlayerSpawnedEventInfo)eventInfo).player;

        switch(playerController.Id)
        {
            case 1:
                target1 = playerController.transform;
                player1 = playerController;
                break;

            case 2:
                target2 = playerController.transform;
                player2 = playerController;
                break;
        }
    }
示例#24
0
    void NetworkWorker()
    {
        while (true) {
            try {
                string address = config.address;
                int port = config.port;

                TcpClient tcpClient = new TcpClient (address, port);
                tcpClient.ReceiveTimeout = 5 * 60 * 1000;

                Stream networkStream = tcpClient.GetStream();
                BinaryReader reader = new BinaryReader(networkStream);

                Debug.Log ("Connected to overlord.");

                while (true) {
                    Debug.Log("Waiting for message...");

                    byte[] eventBytes = reader.ReadBytes(4);
                    byte[] matchIdBytes = reader.ReadBytes(4);

                    if (BitConverter.IsLittleEndian) {
                        Array.Reverse (eventBytes);
                        Array.Reverse (matchIdBytes);
                    }

                    EventType eventType = (EventType)BitConverter.ToInt32 (eventBytes, 0);

                    if (eventType == EventType.Ping) {
                        Debug.Log ("Received ping.");
                    } else {
                        int matchId = BitConverter.ToInt32 (matchIdBytes, 0);

                        Debug.Log ("Received message: " + eventType + " " + matchId);

                        EventInfo eventInfo = new EventInfo(eventType, matchId);
                        OnMessageReceived(eventInfo);
                    }
                }
            } catch (Exception ex) {
                Debug.Log ("Network exception: " + ex);
            } finally {
                Thread.Sleep (5000);
            }
        }
    }
示例#25
0
    void PlayerSpawned(EventInfo eventInfo)
    {
        PlayerController player = ((PlayerSpawnedEventInfo)eventInfo).player;
        switch(player.Id)
        {
            case 1:
                player1 = player;
                player1HealthTxt.enabled = true;
                player1EnergyTxt.enabled = true;
                break;

            case 2:
                player2 = player;
                player2HealthTxt.enabled = true;
                player2EnergyTxt.enabled = true;
                break;
        }
    }
示例#26
0
 public void MatchStateChanged(EventInfo eventInfo)
 {
     EventType receivedEventType = eventInfo.eventType;
     if (gameObject.activeInHierarchy && receivedEventType != eventType) {
         if (deactivationEffect != null)
         {
             deactivationEffect.EnqueueToScheduler();
         }
         OnDeactivation ();
     } else if (!gameObject.activeInHierarchy && receivedEventType == eventType) {
         this.eventInfo = eventInfo;
         if (activationEffect != null)
         {
             activationEffect.EnqueueToScheduler();
         }
         OnActivation ();
     }
 }
示例#27
0
        public void Count()
        {
            int count = 0;

            var scheduler = EventScheduler.New(LogFile.Console);
            scheduler.Start();

            var info = new EventInfo
                {
                    NextShot = DateTime.UtcNow + 20.Milliseconds(),
                    RepeatAfter = 1.Milliseconds(),
                    Count = 2
                };

            scheduler.Schedule(info, () => count++);
            Assert.That(() => count, Is.EqualTo(2).After(200));

            scheduler.Stop();
        }
示例#28
0
文件: Inn.cs 项目: roaet/LD28
 public void InitializeInn(EventInfo info)
 {
     characters.Clear();
     chars = level.characterManager;
     m_info = info;
     foreach(string name in m_info.mobs) {
         CharacterInfo c = chars.GetCharacterByName(name);
         if(c != null) {
             Debug.Log("Found character named: " + name);
             characters.Add(c);
         }
     }
     for(int i = 0; i < 3; i++) {
         slots[i].ToggleSlot(false);
     }
     for(int i = 0; i < characters.Count && i < 3; i++) {
         slots[i].InitializeSlot(characters[i]);
     }
 }
    private void ZonePlanFinished(EventInfo eventInfo)
    {
        ZonePlanEndedInfo info = (ZonePlanEndedInfo)eventInfo;
        switch (info.planId)
        {
            //open door 01
            case 101:
                wallZone01.SetActive(false);
                break;

            case 102:
                wallZone02.SetActive(false);
                wallZone03.SetActive(false);
                break;

            case 103:
                break;
        }
    }
    void ColorChanged(EventInfo eventInfo)
    {
        ColorChangedEventInfo info = (ColorChangedEventInfo)eventInfo;

        switch (info.newColor)
        {
            case ChromaColor.RED:
                thisRenderer.material = colorRed;
                break;
            case ChromaColor.GREEN:
                thisRenderer.material = colorGreen;
                break;
            case ChromaColor.BLUE:
                thisRenderer.material = colorBlue;
                break;
            case ChromaColor.YELLOW:
                thisRenderer.material = colorYellow;
                break;
        }
    }
 public ICollection GetCompatibleMethods(EventInfo edesc)
 {
     return(new object[] {});
 }
示例#32
0
    public static Task <object[]> FromEvent <T>(this T obj, string eventName)
    {
        var           tcs               = new TaskCompletionSource <object[]>();
        var           tcsh              = new TaskCompletionSourceHolder(tcs);
        EventInfo     eventInfo         = obj.GetType().GetEvent(eventName);
        Type          eventDelegateType = eventInfo.EventHandlerType;
        DynamicMethod handler;

        if (!s_emittedHandlers.TryGetValue(eventDelegateType, out handler))
        {
            Type        returnType;
            List <Type> parameterTypes;
            GetDelegateParameterAndReturnTypes(eventDelegateType,
                                               out parameterTypes, out returnType);
            if (returnType != typeof(void))
            {
                throw new NotSupportedException();
            }
            Type       tcshType            = tcsh.GetType();
            MethodInfo setResultMethodInfo = tcshType.GetMethod(
                "SetResult", BindingFlags.NonPublic | BindingFlags.Instance);
            // I'm going to create an instance-like method
            // so, first argument must an instance itself
            // i.e. TaskCompletionSourceHolder *this*
            parameterTypes.Insert(0, tcshType);
            Type[] parameterTypesAr = parameterTypes.ToArray();
            handler = new DynamicMethod("unnamed",
                                        returnType, parameterTypesAr, tcshType);
            ILGenerator ilgen = handler.GetILGenerator();
            // declare local variable of type object[]
            LocalBuilder arr = ilgen.DeclareLocal(typeof(object[]));
            // push array's size onto the stack
            ilgen.Emit(OpCodes.Ldc_I4, parameterTypesAr.Length - 1);
            // create an object array of the given size
            ilgen.Emit(OpCodes.Newarr, typeof(object));
            // and store it in the local variable
            ilgen.Emit(OpCodes.Stloc, arr);
            // iterate thru all arguments except the zero one (i.e. *this*)
            // and store them to the array
            for (int i = 1; i < parameterTypesAr.Length; i++)
            {
                // push the array onto the stack
                ilgen.Emit(OpCodes.Ldloc, arr);
                // push the argument's index onto the stack
                ilgen.Emit(OpCodes.Ldc_I4, i - 1);
                // push the argument onto the stack
                ilgen.Emit(OpCodes.Ldarg, i);
                // check if it is of a value type
                // and perform boxing if necessary
                if (parameterTypesAr[i].IsValueType)
                {
                    ilgen.Emit(OpCodes.Box, parameterTypesAr[i]);
                }
                // store the value to the argument's array
                ilgen.Emit(OpCodes.Stelem, typeof(object));
            }
            // load zero-argument (i.e. *this*) onto the stack
            ilgen.Emit(OpCodes.Ldarg_0);
            // load the array onto the stack
            ilgen.Emit(OpCodes.Ldloc, arr);
            // call this.SetResult(arr);
            ilgen.Emit(OpCodes.Call, setResultMethodInfo);
            // and return
            ilgen.Emit(OpCodes.Ret);
            s_emittedHandlers.Add(eventDelegateType, handler);
        }
        Delegate dEmitted = handler.CreateDelegate(eventDelegateType, tcsh);

        tcsh.Target    = obj;
        tcsh.EventInfo = eventInfo;
        tcsh.Delegate  = dEmitted;
        eventInfo.AddEventHandler(obj, dEmitted);
        return(tcs.Task);
    }
示例#33
0
 private void detachEventHandler(EventInfo @event, Delegate d, object realButton)
 {
     @event.GetRemoveMethod().Invoke(realButton, new object[] { d });
 }
示例#34
0
 public void OnIncomplete(EventInfo info)
 {
     Fade(false);
 }
示例#35
0
        private static IEnumerable <ReflectedClassDto> GetCustomEventHandlers(IService serviceInstance, EventInfo eventInfo)
        {
            var fi = GetEventField(serviceInstance, eventInfo);

            if (fi != null)
            {
                var del = fi.GetValue(serviceInstance) as Delegate;
                if (del != null)
                {
                    return(del.GetInvocationList()
                           .Where(x => !x.Method.DeclaringType.FullName.ToLower().StartsWith("umbraco."))
                           .Select(x => new ReflectedClassDto
                    {
                        Name = x.Method.Name,
                        Namespace = x.Method.DeclaringType.FullName,
                    }));
                }
            }

            return(null);
        }
示例#36
0
        public void Events(SuspendPolicy suspend_policy, EventInfo[] events)
        {
            var l = new List <Event> ();

            for (int i = 0; i < events.Length; ++i)
            {
                EventInfo ei        = events [i];
                int       req_id    = ei.ReqId;
                long      thread_id = ei.ThreadId;
                long      id        = ei.Id;
                long      loc       = ei.Location;

                switch (ei.EventType)
                {
                case EventType.VMStart:
                    vm.notify_vm_event(EventType.VMStart, suspend_policy, req_id, thread_id, null);

                    break;

                case EventType.VMDeath:
                    vm.notify_vm_event(EventType.VMDeath, suspend_policy, req_id, thread_id, null);
                    break;

                case EventType.ThreadStart:
                    l.Add(new ThreadStartEvent(vm, req_id, id));
                    break;

                case EventType.ThreadDeath:
                    l.Add(new ThreadDeathEvent(vm, req_id, id));
                    break;

                case EventType.AssemblyLoad:
                    l.Add(new AssemblyLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AssemblyUnload:
                    l.Add(new AssemblyUnloadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.TypeLoad:
                    l.Add(new TypeLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodEntry:
                    l.Add(new MethodEntryEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodExit:
                    l.Add(new MethodExitEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.Breakpoint:
                    l.Add(new BreakpointEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Step:
                    l.Add(new StepEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Exception:
                    l.Add(new ExceptionEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.AppDomainCreate:
                    l.Add(new AppDomainCreateEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AppDomainUnload:
                    l.Add(new AppDomainUnloadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.UserBreak:
                    l.Add(new UserBreakEvent(vm, req_id, thread_id));
                    break;

                case EventType.UserLog:
                    l.Add(new UserLogEvent(vm, req_id, thread_id, ei.Level, ei.Category, ei.Message));
                    break;

                default:
                    break;
                }
            }

            if (l.Count > 0)
            {
                vm.queue_event_set(new EventSet(vm, suspend_policy, l.ToArray()));
            }
        }
示例#37
0
 public EventObject(EventInfo info)
 {
     this.name = info.Name;
     this.info = info;
 }
示例#38
0
        protected string ProcessAttributes(XmlNode node, object ret, Type t)
        {
            string refName = String.Empty;

            // process attributes
            foreach (XmlAttribute attr in node.Attributes)
            {
                string pname  = attr.Name;
                string pvalue = attr.Value;

                // it's either a property or an event.  Allow assignment to protected / private properties.
                PropertyInfo pi = t.GetProperty(pname, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                EventInfo    ei = t.GetEvent(pname);

                if (pi != null)
                {
                    // it's a property!
                    if (pvalue.StartsWith("{") && pvalue.EndsWith("}"))
                    {
                        // And the value is a reference to an instance!
                        // Get the referenced object.  Late binding is not supported!
                        OnAssignReference(pi, StringHelpers.Between(pvalue, '{', '}'), ret);
                    }
                    else
                    {
                        // it's string, so use a type converter.
                        if (pi.PropertyType.FullName == "System.Object")
                        {
                            OnAssignProperty(pi, ret, pvalue, pvalue);
                        }
                        else
                        {
                            TypeConverter tc = TypeDescriptor.GetConverter(pi.PropertyType);

                            if (tc.CanConvertFrom(typeof(string)))
                            {
                                object val = tc.ConvertFrom(pvalue);

                                try
                                {
                                    OnAssignProperty(pi, ret, val, pvalue);
                                }
                                catch (Exception e)
                                {
                                    Trace.Fail("Property setter for " + pname + " failed:\r\n" + e.Message);
                                }
                            }
                            else
                            {
                                if (!OnCustomAssignProperty(pi, ret, pvalue))
                                {
                                    Trace.Fail("Property setter for " + pname + " cannot be converted to property type " + pi.PropertyType.FullName + ".");
                                }
                            }
                        }
                    }

                    // auto-add to our object collection
                    if ((pname == "Name") || (pname == "def:Name"))
                    {
                        refName = pvalue;
                        // AddInstance(pvalue, ret);
                    }
                }
                else if (ei != null)
                {
                    // it's an event!
                    string src        = pvalue;
                    string methodName = String.Empty;
                    object sink       = eventSink;

                    if ((StringHelpers.BeginsWith(src, '{')) && (StringHelpers.EndsWith(src, '}')))
                    {
                        src = StringHelpers.Between(src, '{', '}');
                    }

                    if (src.IndexOf('.') != -1)
                    {
                        string[] handler = src.Split('.');
                        src        = handler[0];
                        methodName = handler[1];
                        sink       = GetInstance(src);
                    }
                    else
                    {
                        methodName = src;
                    }

                    OnAssignEvent(ei, ret, sink, src, methodName);
                }
                else
                {
                    // auto-add to our object collection
                    if ((pname == "Name") || (pname == "def:Name"))
                    {
                        refName = pvalue;
                        // AddInstance(pvalue, ret);
                    }
                    else if (pname == "ref:Name")
                    {
                        // Do nothing.
                    }
                    else
                    {
                        if (!OnUnknownProperty(pname, ret, pvalue))
                        {
                            // who knows what it is???
                            Trace.Fail("Failed acquiring property information for '" + pname + "' with value '" + pvalue + "'");
                        }
                    }
                }
            }
            return(refName);
        }
示例#39
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AvaloniaEventHandlerItem"/> class
 /// with the specified element name, element, event name, routed event, event information,
 /// event handler, and a value that indicates whether to register the handler such that
 /// it is invoked even when the event is marked handled in its event data.
 /// </summary>
 /// <param name="elementName">The name of the element that raises the event.</param>
 /// <param name="element">The element that raises the event.</param>
 /// <param name="eventName">The name of the event.</param>
 /// <param name="routedEvent">The routed event that is raised.</param>
 /// <param name="eventInfo">The information of the event that is raised</param>
 /// <param name="handler">The handler of the event.</param>
 /// <param name="handledEventsToo">
 /// <c>true</c> to register the handler such that it is invoked even when the
 /// event is marked handled in its event data; <c>false</c> to register the
 /// handler with the default condition that it will not be invoked if the event
 /// is already marked handled.
 /// </param>
 public AvaloniaEventHandlerItem(string elementName, StyledElement element, string eventName, RoutedEvent routedEvent, EventInfo eventInfo, Delegate handler, bool handledEventsToo) : base(elementName, element, eventName, handler, handledEventsToo)
 {
     this.routedEvent = routedEvent;
     this.eventInfo   = eventInfo;
 }
示例#40
0
        /// <summary>
        /// Erstellt Drähte zwischen Client- und Server-Komponente (wenn im Korrelationssatz angegeben).
        /// </summary>
        /// <param name="type">Implementierungstyp der Server-Komponente</param>
        /// <param name="instance">Instanz der Serverkomponente</param>
        /// <param name="delegateCorrelationSet">Korrelationssatz mit Verdrahtungsinformationen</param>
        /// <param name="wiringList">Auflistung mit gespeicherten Verdrahtungen</param>
        private void CreateClientServerWires(Type type, object instance, List <DelegateCorrelationInfo> delegateCorrelationSet, Dictionary <Guid, Delegate> wiringList)
        {
            // Wenn kein Korrelationssatz angegeben wurde ...
            if (delegateCorrelationSet == null)
            {
                // Prozedur abbrechen
                return;
            }

            // Alle Einträge des Korrelationssatzes durchlaufen
            foreach (DelegateCorrelationInfo correlationInfo in delegateCorrelationSet)
            {
                // Wenn mit diesem Korrelationsschlüssel schon verdrahtet wurde ...
                if (wiringList.ContainsKey(correlationInfo.CorrelationID))
                {
                    // Mit dem nächsten Eintrag weitermachen
                    continue;
                }

                // Dynamischen Draht erzeugen
                object dynamicWire = DynamicWireFactory.Instance.CreateDynamicWire(type, correlationInfo.DelegateMemberName, correlationInfo.IsEvent);

                // Typ des dynamischen Drahtes ermitteln
                Type dynamicWireType = dynamicWire.GetType();

                // Dynamischen Draht mit Client-Fernsteuerung verdrahten
                dynamicWireType.GetProperty("Interceptor").SetValue(dynamicWire, correlationInfo.ClientDelegateInterceptor, null);

                // wenn es sich um ein Ereignis handelt ...
                if (correlationInfo.IsEvent)
                {
                    // Metadaten des Ereignisses abufen
                    EventInfo eventInfo = type.GetEvent(correlationInfo.DelegateMemberName);

                    // Zusatzinformationen übergeben
                    dynamicWireType.GetProperty("ServerEventInfo").SetValue(dynamicWire, eventInfo, null);
                    dynamicWireType.GetProperty("Component").SetValue(dynamicWire, instance, null);

                    // Delegat zu dynamischem Draht erzeugen
                    Delegate dynamicWireDelegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, dynamicWire, dynamicWireType.GetMethod("In"));

                    // Ausgehende Nachrichten mit passender Abfangvorrichtung verdrahten
                    eventInfo.AddEventHandler(instance, dynamicWireDelegate);

                    // Verdrahtung speichern
                    wiringList.Add(correlationInfo.CorrelationID, dynamicWireDelegate);
                }
                else
                {
                    // Metadaten des aktuellen Ausgabe-Pins abufen
                    PropertyInfo outputPinMetaData = type.GetProperty(correlationInfo.DelegateMemberName);

                    // Delegat zu dynamischem Draht erzeugen
                    Delegate dynamicWireDelegate = Delegate.CreateDelegate(outputPinMetaData.PropertyType, dynamicWire, dynamicWireType.GetMethod("In"));

                    // Ausgehende Nachrichten mit passender Abfangvorrichtung verdrahten
                    outputPinMetaData.SetValue(instance, dynamicWireDelegate, null);

                    // Verdrahtung speichern
                    wiringList.Add(correlationInfo.CorrelationID, dynamicWireDelegate);
                }
            }
        }
示例#41
0
 private void detachEventHandler(EventInfo @event, Delegate d, object realButton)
 {
     @event.RemoveEventHandler(realButton, d);
 }
        public LuaCSFunction GetEventWrap(Type type, string eventName)
        {
            if (!methodsCache.ContainsKey(type))
            {
                methodsCache[type] = new Dictionary <string, LuaCSFunction>();
            }

            var methodsOfType = methodsCache[type];

            if (!methodsOfType.ContainsKey(eventName))
            {
                {
                    EventInfo eventInfo = type.GetEvent(eventName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Static);
                    if (eventInfo == null)
                    {
                        throw new Exception(type.Name + " has no event named: " + eventName);
                    }
                    int start_idx = 0;

                    MethodInfo add    = eventInfo.GetAddMethod();
                    MethodInfo remove = eventInfo.GetRemoveMethod();

                    bool is_static = add != null ? add.IsStatic : remove.IsStatic;
                    if (!is_static)
                    {
                        start_idx = 1;
                    }

                    methodsOfType[eventName] = (L) =>
                    {
                        object obj = null;

                        if (!is_static)
                        {
                            obj = translator.GetObject(L, 1, type);
                            if (obj == null)
                            {
                                return(LuaAPI.luaL_error(L, "invalid #1, needed:" + type));
                            }
                        }

                        try
                        {
                            Delegate handlerDelegate = translator.CreateDelegateBridge(L, eventInfo.EventHandlerType, start_idx + 2);
                            if (handlerDelegate == null)
                            {
                                return(LuaAPI.luaL_error(L, "invalid #" + (start_idx + 2) + ", needed:" + eventInfo.EventHandlerType));
                            }
                            switch (LuaAPI.lua_tostring(L, start_idx + 1))
                            {
                            case "+":
                                if (add == null)
                                {
                                    return(LuaAPI.luaL_error(L, "no add for event " + eventName));
                                }
                                add.Invoke(obj, new object[] { handlerDelegate });
                                break;

                            case "-":
                                if (remove == null)
                                {
                                    return(LuaAPI.luaL_error(L, "no remove for event " + eventName));
                                }
                                remove.Invoke(obj, new object[] { handlerDelegate });
                                break;

                            default:
                                return(LuaAPI.luaL_error(L, "invalid #" + (start_idx + 1) + ", needed: '+' or '-'" + eventInfo.EventHandlerType));
                            }
                        }
                        catch (System.Exception e)
                        {
                            return(LuaAPI.luaL_error(L, "c# exception:" + e + ",stack:" + e.StackTrace));
                        }

                        return(0);
                    };
                }
            }
            return(methodsOfType[eventName]);
        }
示例#43
0
 public override void Read()
 {
     EventInfo.Read(_worldPacket);
     MaxSize = _worldPacket.ReadUInt32();
 }
 public void MergeFrom(GymGetInfoResponse other)
 {
     if (other == null)
     {
         return;
     }
     if (other.gymStatusAndDefenders_ != null)
     {
         if (gymStatusAndDefenders_ == null)
         {
             gymStatusAndDefenders_ = new global::POGOProtos.Data.Gym.GymStatusAndDefenders();
         }
         GymStatusAndDefenders.MergeFrom(other.GymStatusAndDefenders);
     }
     if (other.Name.Length != 0)
     {
         Name = other.Name;
     }
     if (other.Url.Length != 0)
     {
         Url = other.Url;
     }
     if (other.Result != 0)
     {
         Result = other.Result;
     }
     if (other.Description.Length != 0)
     {
         Description = other.Description;
     }
     if (other.SecondaryUrl.Length != 0)
     {
         SecondaryUrl = other.SecondaryUrl;
     }
     if (other.awardedGymBadge_ != null)
     {
         if (awardedGymBadge_ == null)
         {
             awardedGymBadge_ = new global::POGOProtos.Data.Badge.AwardedGymBadge();
         }
         AwardedGymBadge.MergeFrom(other.AwardedGymBadge);
     }
     if (other.CheckinImageUrl.Length != 0)
     {
         CheckinImageUrl = other.CheckinImageUrl;
     }
     if (other.eventInfo_ != null)
     {
         if (eventInfo_ == null)
         {
             eventInfo_ = new global::POGOProtos.Data.Raid.EventInfo();
         }
         EventInfo.MergeFrom(other.EventInfo);
     }
     if (other.displayWeather_ != null)
     {
         if (displayWeather_ == null)
         {
             displayWeather_ = new global::POGOProtos.Map.Weather.DisplayWeather();
         }
         DisplayWeather.MergeFrom(other.DisplayWeather);
     }
     _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
 }
示例#45
0
        /// <summary>
        /// Reads a <see cref="System.Reflection.MemberInfo"/>, including referenced objects.
        /// </summary>
        /// <param name="dataType">The <see cref="Duality.Serialization.DataType"/> of the object to read.</param>
        /// <returns>The object that has been read.</returns>
        protected MemberInfo ReadMemberInfo(DataType dataType)
        {
            uint       objId  = this.reader.ReadUInt32();
            MemberInfo result = null;

            try
            {
                #region Version 1
                if (this.dataVersion <= 1)
                {
                    if (dataType == DataType.Type)
                    {
                        string typeString = this.reader.ReadString();
                        Type   type       = this.ResolveType(typeString);
                        result = type;
                    }
                    else if (dataType == DataType.FieldInfo)
                    {
                        bool   isStatic            = this.reader.ReadBoolean();
                        string declaringTypeString = this.reader.ReadString();
                        string fieldName           = this.reader.ReadString();

                        Type      declaringType = this.ResolveType(declaringTypeString);
                        FieldInfo field         = declaringType.GetField(fieldName, isStatic ? ReflectionHelper.BindStaticAll : ReflectionHelper.BindInstanceAll);
                        result = field;
                    }
                    else if (dataType == DataType.PropertyInfo)
                    {
                        bool   isStatic            = this.reader.ReadBoolean();
                        string declaringTypeString = this.reader.ReadString();
                        string propertyName        = this.reader.ReadString();
                        string propertyTypeString  = this.reader.ReadString();

                        int      paramCount       = this.reader.ReadInt32();
                        string[] paramTypeStrings = new string[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypeStrings[i] = this.reader.ReadString();
                        }

                        Type   declaringType = this.ResolveType(declaringTypeString);
                        Type   propertyType  = this.ResolveType(propertyTypeString);
                        Type[] paramTypes    = new Type[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypes[i] = this.ResolveType(paramTypeStrings[i]);
                        }

                        PropertyInfo property = declaringType.GetProperty(
                            propertyName,
                            isStatic ? ReflectionHelper.BindStaticAll : ReflectionHelper.BindInstanceAll,
                            null,
                            propertyType,
                            paramTypes,
                            null);

                        result = property;
                    }
                    else if (dataType == DataType.MethodInfo)
                    {
                        bool   isStatic            = this.reader.ReadBoolean();
                        string declaringTypeString = this.reader.ReadString();
                        string methodName          = this.reader.ReadString();

                        int      paramCount       = this.reader.ReadInt32();
                        string[] paramTypeStrings = new string[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypeStrings[i] = this.reader.ReadString();
                        }

                        Type   declaringType = this.ResolveType(declaringTypeString);
                        Type[] paramTypes    = new Type[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypes[i] = this.ResolveType(paramTypeStrings[i]);
                        }

                        MethodInfo method = declaringType.GetMethod(methodName, isStatic ? ReflectionHelper.BindStaticAll : ReflectionHelper.BindInstanceAll, null, paramTypes, null);
                        result = method;
                    }
                    else if (dataType == DataType.ConstructorInfo)
                    {
                        bool   isStatic            = this.reader.ReadBoolean();
                        string declaringTypeString = this.reader.ReadString();

                        int      paramCount       = this.reader.ReadInt32();
                        string[] paramTypeStrings = new string[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypeStrings[i] = this.reader.ReadString();
                        }

                        Type   declaringType = this.ResolveType(declaringTypeString);
                        Type[] paramTypes    = new Type[paramCount];
                        for (int i = 0; i < paramCount; i++)
                        {
                            paramTypes[i] = this.ResolveType(paramTypeStrings[i]);
                        }

                        ConstructorInfo method = declaringType.GetConstructor(isStatic ? ReflectionHelper.BindStaticAll : ReflectionHelper.BindInstanceAll, null, paramTypes, null);
                        result = method;
                    }
                    else if (dataType == DataType.EventInfo)
                    {
                        bool   isStatic            = this.reader.ReadBoolean();
                        string declaringTypeString = this.reader.ReadString();
                        string eventName           = this.reader.ReadString();

                        Type      declaringType = this.ResolveType(declaringTypeString);
                        EventInfo e             = declaringType.GetEvent(eventName, isStatic ? ReflectionHelper.BindStaticAll : ReflectionHelper.BindInstanceAll);
                        result = e;
                    }
                    else
                    {
                        throw new ApplicationException(string.Format("Invalid DataType '{0}' in ReadMemberInfo method.", dataType));
                    }
                }
                #endregion
                else if (this.dataVersion >= 2)
                {
                    if (dataType == DataType.Type)
                    {
                        string typeString = this.reader.ReadString();
                        result = this.ResolveType(typeString, objId);
                    }
                    else
                    {
                        string memberString = this.reader.ReadString();
                        result = this.ResolveMember(memberString, objId);
                    }
                }
            }
            catch (Exception e)
            {
                result = null;
                this.SerializationLog.WriteError(
                    "An error occurred in deserializing MemberInfo object Id {0} of type '{1}': {2}",
                    objId,
                    Log.Type(dataType.ToActualType()),
                    Log.Exception(e));
            }

            // Prepare object reference
            this.idManager.Inject(result, objId);

            return(result);
        }
示例#46
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    void ProcessMouse()
    {
        // get current position and delta pos
        Vector2 lastPointerPos = mouseState.currentPos;

        mouseState.currentPos = Input.mousePosition;
        Vector2 deltaPos = mouseState.currentPos - lastPointerPos;

        // get current mouse button
        exUIEvent.MouseButtonFlags lastButtons = mouseState.currentButtons;
        exUIEvent.MouseButtonFlags buttonDown  = exUIEvent.MouseButtonFlags.None;
        exUIEvent.MouseButtonFlags buttonUp    = exUIEvent.MouseButtonFlags.None;

        // handle pressed
        mouseState.currentButtons = exUIEvent.MouseButtonFlags.None;
        if (Input.anyKey)
        {
            if (Input.GetMouseButton(0))
            {
                mouseState.currentButtons |= exUIEvent.MouseButtonFlags.Left;
            }
            if (Input.GetMouseButton(1))
            {
                mouseState.currentButtons |= exUIEvent.MouseButtonFlags.Right;
            }
            if (Input.GetMouseButton(2))
            {
                mouseState.currentButtons |= exUIEvent.MouseButtonFlags.Middle;
            }
        }

        // handle press
        if (Input.anyKeyDown)
        {
            if (Input.GetMouseButtonDown(0))
            {
                buttonDown = exUIEvent.MouseButtonFlags.Left;
            }
            else if (Input.GetMouseButtonDown(1))
            {
                buttonDown = exUIEvent.MouseButtonFlags.Right;
            }
            else if (Input.GetMouseButtonDown(2))
            {
                buttonDown = exUIEvent.MouseButtonFlags.Middle;
            }
        }

        // handle release
        if (lastButtons != mouseState.currentButtons)
        {
            if (Input.GetMouseButtonUp(0))
            {
                buttonUp = exUIEvent.MouseButtonFlags.Left;
            }
            else if (Input.GetMouseButtonUp(1))
            {
                buttonUp = exUIEvent.MouseButtonFlags.Right;
            }
            else if (Input.GetMouseButtonUp(2))
            {
                buttonUp = exUIEvent.MouseButtonFlags.Middle;
            }
        }

        // get hot element
        exUIElement lastHotElement = mouseState.hotElement;

        mouseState.hotElement = PickElement(mouseState.currentPos);

        // process hover event
        if (lastHotElement != mouseState.hotElement)
        {
            // add hover-in event
            if (mouseState.hotElement != null)
            {
                exUIEvent e = new exUIEvent();
                e.category = exUIEvent.Category.Mouse;
                e.type     = exUIEvent.Type.MouseEnter;
                e.position = mouseState.currentPos;
                e.delta    = deltaPos;
                e.buttons  = mouseState.currentButtons;

                EventInfo info = new EventInfo();
                info.primaryElement = mouseState.hotElement;
                info.uiEvent        = e;
                eventInfoList.Add(info);
            }

            // add hover-out event
            if (lastHotElement != null)
            {
                exUIEvent e = new exUIEvent();
                e.category = exUIEvent.Category.Mouse;
                e.type     = exUIEvent.Type.MouseExit;
                e.position = mouseState.currentPos;
                e.delta    = deltaPos;
                e.buttons  = mouseState.currentButtons;

                EventInfo info = new EventInfo();
                info.primaryElement = lastHotElement;
                info.uiEvent        = e;
                eventInfoList.Add(info);
            }
        }

        // add pointer-move event
        if ((mouseState.hotElement != null || mouseState.focusElement != null) && deltaPos != Vector2.zero)
        {
            exUIEvent e = new exUIEvent();
            e.category = exUIEvent.Category.Mouse;
            e.type     = exUIEvent.Type.MouseMove;
            e.position = mouseState.currentPos;
            e.delta    = deltaPos;
            e.buttons  = mouseState.currentButtons;

            EventInfo info = new EventInfo();
            info.primaryElement = (mouseState.focusElement != null) ? mouseState.focusElement : mouseState.hotElement;
            info.uiEvent        = e;
            eventInfoList.Add(info);
        }

        // add pointer-press event
        if (mouseState.hotElement != null && buttonDown != exUIEvent.MouseButtonFlags.None)
        {
            exUIEvent e = new exUIEvent();
            e.category = exUIEvent.Category.Mouse;
            e.type     = exUIEvent.Type.MouseDown;
            e.position = mouseState.currentPos;
            e.delta    = deltaPos;
            e.buttons  = buttonDown;

            EventInfo info = new EventInfo();
            info.primaryElement = mouseState.hotElement;
            info.uiEvent        = e;
            eventInfoList.Add(info);
        }

        // add pointer-release event
        if (mouseState.focusElement != null && buttonUp != exUIEvent.MouseButtonFlags.None)
        {
            exUIEvent e = new exUIEvent();
            e.category = exUIEvent.Category.Mouse;
            e.type     = exUIEvent.Type.MouseUp;
            e.position = mouseState.currentPos;
            e.delta    = deltaPos;
            e.buttons  = buttonUp;

            EventInfo info = new EventInfo();
            info.primaryElement = mouseState.focusElement;
            info.uiEvent        = e;
            eventInfoList.Add(info);
        }
    }
        void ReadObjectBaseTypeMembers(object obj, Type objectType, BindingFlags flags)
        {
            var numFields = Reader.ReadInt32();

            for (var iField = 0; iField < numFields; iField++)
            {
                var fieldName  = Reader.ReadString();
                var fieldValue = Read();

                if (objectType != null)
                {
                    var fieldInfo = objectType.GetField(fieldName, flags);
                    if (fieldInfo != null && !fieldInfo.IsLiteral && (obj == null) == fieldInfo.IsStatic)
                    {
                        fieldInfo.SetValue(obj, fieldValue);
                    }
                }
            }

            var numEvents = Reader.ReadInt32();

            for (var iEvent = 0; iEvent < numEvents; iEvent++)
            {
                var eventName = Reader.ReadString();

                if (Reader.ReadBoolean())
                {
                    var delegateType  = ReadType();
                    var functionCount = Reader.ReadInt32();

                    EventInfo eventInfo = objectType != null?objectType.GetEvent(eventName, flags) : null;

                    for (int i = 0; i < functionCount; i++)
                    {
                        var methodInfo = Read() as MethodInfo;
                        var target     = Read();

                        Delegate parsedDelegate;

                        if (target != null)
                        {
                            parsedDelegate = Delegate.CreateDelegate(delegateType, target, methodInfo);
                        }
                        else
                        {
                            parsedDelegate = Delegate.CreateDelegate(delegateType, methodInfo);
                        }

                        if (eventInfo != null)
                        {
                            var addMethod = eventInfo.GetAddMethod(true);
                            addMethod.Invoke(obj, new[] { parsedDelegate });
                        }
                    }
                }
            }

            if (objectType != null)
            {
                // Special case, always get native pointers for SWIG director types
                var swigCPtr = objectType.GetField("swigCPtr", flags);
                if (swigCPtr != null)
                {
                    // Start with director handling, aka support for cross-language polymorphism
                    var swigDirectorConnect = objectType.GetMethod("SwigDirectorConnect", flags);
                    if (swigDirectorConnect != null)
                    {
                        var swigCMemOwn = objectType.GetField("swigCMemOwn", flags);

                        // Should not be null, if it is we need to check if something is wrong
                        var constructor = objectType.GetConstructor(Type.EmptyTypes);

                        var newObj = constructor.Invoke(null);

                        swigCMemOwn.SetValue(newObj, false);
                        swigCMemOwn.SetValue(obj, true);

                        var handleReference = new HandleRef(obj, ((HandleRef)swigCPtr.GetValue(newObj)).Handle);

                        swigCPtr.SetValue(obj, handleReference);
                        swigDirectorConnect.Invoke(obj, null);
                    }
                    else                     // Support for other types, such as Vec3 (where we should simply take ownership of the native pointer
                    {
                        var handleReference = new HandleRef(obj, ((HandleRef)swigCPtr.GetValue(obj)).Handle);
                        swigCPtr.SetValue(obj, handleReference);
                    }
                }
            }
        }
示例#48
0
 public EmptyXamlMember(EventInfo eventInfo, XamlSchemaContext context)
     : base(eventInfo, context)
 {
 }
示例#49
0
 public Event VisitEvent(EventInfo @event)
 {
     throw new NotImplementedException();
 }
示例#50
0
 /// <summary>
 /// Determines whether this event is equal to the given event.
 /// </summary>
 /// <param name="other">Other event to compare.</param>
 /// <returns><see langword="true"/> if this object reflects the same event as the specified object; otherwise, <see langword="false"/>.</returns>
 public bool Equals(EventInfo other) => other is Event <D> @event ? this.@event == @event.@event : this.@event == other;
示例#51
0
        public void TestTeamCompetition()
        {
            var eventInfo = new EventInfo {
                eventType = EventType.Team, roundInfos = TeamNormal()
            };
            var hillInfo = new HillInfo(123, 140, 5.5m, 6.66m, 4.2m, 0.79m);

            const int competitorsCount = 5, competitorsCount2 = 3;
            var       orderedParticipants = GetMockParticipantsTeam(competitorsCount);
            var       resultsManager      = new ResultsManager(eventInfo, orderedParticipants, hillInfo);

            resultsManager.RoundInit();
            resultsManager.SubroundInit();

            // bibs 1st round
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Bibs[0]).ToList(),
                                    Enumerable.Range(1, competitorsCount).Reverse().ToList()));

            // 1st round 1st group
            Assert.IsTrue(ListEqual(resultsManager.StartList,
                                    Enumerable.Range(0, competitorsCount).Reverse().ToList()));
            RegisterJumps(resultsManager, Enumerable.Repeat(123m, competitorsCount));
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              Enumerable.Range(0, competitorsCount).ToList()));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                1, 1, 1, 1, 1
            }));
            resultsManager.SubroundFinish();

            // 1st round 2nd group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList,
                                    Enumerable.Range(0, competitorsCount).Reverse().ToList()));
            RegisterJumps(resultsManager, new List <decimal> {
                123, 124, 125, 124, 123
            });
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                2, 1, 3, 0, 4
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                4, 2, 1, 2, 4
            }));
            resultsManager.SubroundFinish();

            // 1st round 3rd group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList,
                                    Enumerable.Range(0, competitorsCount).Reverse().ToList()));
            RegisterJumps(resultsManager, new List <decimal> {
                123, 124, 125, 126, 127
            });
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              Enumerable.Range(0, competitorsCount).ToList()));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                1, 1, 1, 4, 5
            }));
            resultsManager.SubroundFinish();

            // start list 1st round 4th group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList,
                                    Enumerable.Range(0, competitorsCount).Reverse().ToList()));
            RegisterJumps(resultsManager, new List <decimal> {
                130, 123, 123, 124, 124
            });
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                4, 0, 1, 2, 3
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                2, 2, 4, 5, 1
            }));
            resultsManager.SubroundFinish();
            resultsManager.RoundFinish();
            resultsManager.RoundInit();
            resultsManager.SubroundInit();

            // bibs 2nd round
            Assert.IsTrue(resultsManager.StartList.Select(it => resultsManager.Results[it])
                          .Any(it => it.Bibs[0] == it.Bibs[1]));

            // 2nd round 1st group
            Assert.IsTrue(ListEqual(resultsManager.StartList, new List <int> {
                4, 1, 0
            }));
            RegisterJumps(resultsManager, Enumerable.Repeat(123m, competitorsCount2));
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount2).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                4, 0, 1
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                2, 2, 4, 5, 1
            }));
            resultsManager.SubroundFinish();

            // 2nd round 2nd group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList, new List <int> {
                4, 1, 0
            }));
            RegisterJumps(resultsManager, Enumerable.Repeat(123m, competitorsCount2));
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount2).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                4, 0, 1
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                2, 2, 4, 5, 1
            }));
            resultsManager.SubroundFinish();

            // 2nd round 3rd group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList, new List <int> {
                4, 1, 0
            }));
            RegisterJumps(resultsManager, new List <decimal> {
                129, 131, 129
            });
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount2).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                1, 4, 0
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                3, 1, 4, 5, 1
            }));
            resultsManager.SubroundFinish();

            // 2nd round 4th group
            resultsManager.SubroundInit();
            Assert.IsTrue(ListEqual(resultsManager.StartList, new List <int> {
                0, 4, 1
            }));
            RegisterJumps(resultsManager, new List <decimal> {
                135, 131, 131
            });
            Assert.IsTrue(ListEqual(
                              Enumerable.Range(0, competitorsCount2).Select(it => resultsManager.GetIdByRank(it)).ToList(),
                              new List <int> {
                0, 1, 4
            }));
            Assert.IsTrue(ListEqual(resultsManager.Results.Select(it => it.Rank).ToList(),
                                    new List <int> {
                1, 2, 4, 5, 2
            }));
        }
示例#52
0
文件: CodeEmit.cs 项目: Guxin233/xLua
        public Type EmitInterfaceImpl(Type to_be_impl)
        {
            if (!to_be_impl.IsInterface)
            {
                throw new InvalidOperationException("interface expected, but got " + to_be_impl);
            }

            if (!gen_interfaces.Contains(to_be_impl))
            {
                throw new InvalidCastException("This type must add to CSharpCallLua: " + to_be_impl);
            }

            TypeBuilder impl_type_builder = CodeEmitModule.DefineType("XLuaGenInterfaceImpl" + (genID++), TypeAttributes.Public | TypeAttributes.Class, typeof(LuaBase), new Type[] { to_be_impl });

            foreach (var member in to_be_impl.GetMembers())
            {
                if (member.MemberType == MemberTypes.Method)
                {
                    MethodInfo method = member as MethodInfo;
                    if (method.Name.StartsWith("get_") || method.Name.StartsWith("set_") ||
                        method.Name.StartsWith("add_") || method.Name.StartsWith("remove_"))
                    {
                        continue;
                    }

                    var method_builder = defineImplementMethod(impl_type_builder, method,
                                                               MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual);

                    genImpl(method, method_builder.GetILGenerator(), true);
                }
                else if (member.MemberType == MemberTypes.Property)
                {
                    PropertyInfo    property     = member as PropertyInfo;
                    PropertyBuilder prop_builder = impl_type_builder.DefineProperty(property.Name, property.Attributes, property.PropertyType, Type.EmptyTypes);
                    if (property.Name == "Item")
                    {
                        if (property.CanRead)
                        {
                            var getter_buildler = defineImplementMethod(impl_type_builder, property.GetGetMethod(),
                                                                        MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig);
                            genEmptyMethod(getter_buildler.GetILGenerator(), property.PropertyType);
                            prop_builder.SetGetMethod(getter_buildler);
                        }
                        if (property.CanWrite)
                        {
                            var setter_buildler = defineImplementMethod(impl_type_builder, property.GetSetMethod(),
                                                                        MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig);
                            genEmptyMethod(setter_buildler.GetILGenerator(), property.PropertyType);
                            prop_builder.SetSetMethod(setter_buildler);
                        }
                        continue;
                    }
                    if (property.CanRead)
                    {
                        MethodBuilder getter_buildler = impl_type_builder.DefineMethod("get_" + property.Name,
                                                                                       MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
                                                                                       property.PropertyType, Type.EmptyTypes);

                        ILGenerator il = getter_buildler.GetILGenerator();

                        LocalBuilder L          = il.DeclareLocal(typeof(RealStatePtr));
                        LocalBuilder oldTop     = il.DeclareLocal(typeof(int));
                        LocalBuilder translator = il.DeclareLocal(typeof(ObjectTranslator));
                        LocalBuilder ret        = il.DeclareLocal(property.PropertyType);

                        // L = LuaBase.L;
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Callvirt, LuaBase_L_getter);
                        il.Emit(OpCodes.Stloc, L);

                        //oldTop = LuaAPI.lua_gettop(L);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Call, LuaAPI_lua_gettop);
                        il.Emit(OpCodes.Stloc, oldTop);

                        //translator = LuaBase.translator;
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Callvirt, LuaBase_translator_getter);
                        il.Emit(OpCodes.Stloc, translator);

                        //LuaAPI.lua_getref(L, luaReference);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Ldfld, LuaBase_luaReference);
                        il.Emit(OpCodes.Call, LuaAPI_lua_getref);

                        //LuaAPI.lua_pushstring(L, "xxx");
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldstr, property.Name);
                        il.Emit(OpCodes.Call, LuaAPI_lua_pushstring);

                        //LuaAPI.xlua_pgettable(L, -2)
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldc_I4_S, (sbyte)-2);
                        il.Emit(OpCodes.Call, LuaAPI_xlua_pgettable);
                        Label gettable_no_exception = il.DefineLabel();
                        il.Emit(OpCodes.Brfalse, gettable_no_exception);

                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Ldfld, LuaBase_luaEnv);
                        il.Emit(OpCodes.Ldloc, oldTop);
                        il.Emit(OpCodes.Callvirt, LuaEnv_ThrowExceptionFromError);
                        il.MarkLabel(gettable_no_exception);

                        il.Emit(OpCodes.Ldloc, translator);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldc_I4_S, (sbyte)-1);
                        il.Emit(OpCodes.Ldtoken, property.PropertyType);
                        il.Emit(OpCodes.Call, Type_GetTypeFromHandle); // typeof(type)
                        il.Emit(OpCodes.Callvirt, ObjectTranslator_GetObject);

                        if (property.PropertyType.IsValueType)
                        {
                            Label        not_null  = il.DefineLabel();
                            Label        null_done = il.DefineLabel();
                            LocalBuilder local_new = il.DeclareLocal(property.PropertyType);

                            il.Emit(OpCodes.Dup);
                            il.Emit(OpCodes.Brtrue_S, not_null);

                            il.Emit(OpCodes.Pop);
                            il.Emit(OpCodes.Ldloca, local_new);
                            il.Emit(OpCodes.Initobj, property.PropertyType);
                            il.Emit(OpCodes.Ldloc, local_new);
                            il.Emit(OpCodes.Br_S, null_done);

                            il.MarkLabel(not_null);
                            il.Emit(OpCodes.Unbox_Any, property.PropertyType);
                            il.MarkLabel(null_done);
                        }
                        else if (property.PropertyType != typeof(object))
                        {
                            il.Emit(OpCodes.Castclass, property.PropertyType);
                        }
                        il.Emit(OpCodes.Stloc, ret);

                        //LuaAPI.lua_pop(L, 2);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldc_I4_S, (sbyte)2);
                        il.Emit(OpCodes.Call, LuaAPI_lua_pop);

                        il.Emit(OpCodes.Ldloc, ret);
                        il.Emit(OpCodes.Ret);

                        prop_builder.SetGetMethod(getter_buildler);
                    }
                    if (property.CanWrite)
                    {
                        MethodBuilder setter_builder = impl_type_builder.DefineMethod("set_" + property.Name,
                                                                                      MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
                                                                                      null, new Type[] { property.PropertyType });

                        ILGenerator il = setter_builder.GetILGenerator();

                        LocalBuilder L          = il.DeclareLocal(typeof(RealStatePtr));
                        LocalBuilder oldTop     = il.DeclareLocal(typeof(int));
                        LocalBuilder translator = il.DeclareLocal(typeof(ObjectTranslator));

                        // L = LuaBase.L;
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Callvirt, LuaBase_L_getter);
                        il.Emit(OpCodes.Stloc, L);

                        //oldTop = LuaAPI.lua_gettop(L);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Call, LuaAPI_lua_gettop);
                        il.Emit(OpCodes.Stloc, oldTop);

                        //translator = LuaBase.translator;
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Callvirt, LuaBase_translator_getter);
                        il.Emit(OpCodes.Stloc, translator);

                        //LuaAPI.lua_getref(L, luaReference);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Ldfld, LuaBase_luaReference);
                        il.Emit(OpCodes.Call, LuaAPI_lua_getref);

                        //LuaAPI.lua_pushstring(L, "xxx");
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldstr, property.Name);
                        il.Emit(OpCodes.Call, LuaAPI_lua_pushstring);

                        //translator.Push(L, value);
                        il.Emit(OpCodes.Ldloc, translator);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldarg_1);
                        if (property.PropertyType.IsValueType)
                        {
                            il.Emit(OpCodes.Box, property.PropertyType);
                        }
                        il.Emit(OpCodes.Callvirt, ObjectTranslator_PushAny);

                        //LuaAPI.xlua_psettable(L, -2)
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldc_I4_S, (sbyte)-3);
                        il.Emit(OpCodes.Call, LuaAPI_xlua_psettable);
                        Label settable_no_exception = il.DefineLabel();
                        il.Emit(OpCodes.Brfalse, settable_no_exception);

                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Ldfld, LuaBase_luaEnv);
                        il.Emit(OpCodes.Ldloc, oldTop);
                        il.Emit(OpCodes.Callvirt, LuaEnv_ThrowExceptionFromError);
                        il.MarkLabel(settable_no_exception);

                        //LuaAPI.lua_pop(L, 1);
                        il.Emit(OpCodes.Ldloc, L);
                        il.Emit(OpCodes.Ldc_I4_S, (sbyte)1);
                        il.Emit(OpCodes.Call, LuaAPI_lua_pop);

                        il.Emit(OpCodes.Ret);

                        prop_builder.SetSetMethod(setter_builder);
                    }
                }
                else if (member.MemberType == MemberTypes.Event)
                {
                    EventInfo    event_info    = member as EventInfo;
                    EventBuilder event_builder = impl_type_builder.DefineEvent(event_info.Name, event_info.Attributes, event_info.EventHandlerType);
                    if (event_info.GetAddMethod() != null)
                    {
                        var add_buildler = defineImplementMethod(impl_type_builder, event_info.GetAddMethod(),
                                                                 MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig);
                        genEmptyMethod(add_buildler.GetILGenerator(), typeof(void));
                        event_builder.SetAddOnMethod(add_buildler);
                    }
                    if (event_info.GetRemoveMethod() != null)
                    {
                        var remove_buildler = defineImplementMethod(impl_type_builder, event_info.GetRemoveMethod(),
                                                                    MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig);
                        genEmptyMethod(remove_buildler.GetILGenerator(), typeof(void));
                        event_builder.SetRemoveOnMethod(remove_buildler);
                    }
                }
            }


            // Constructor
            var             ctor_param_types = new Type[] { typeof(int), typeof(LuaEnv) };
            ConstructorInfo parent_ctor      = typeof(LuaBase).GetConstructor(ctor_param_types);
            var             ctor_builder     = impl_type_builder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, ctor_param_types);
            var             cg = ctor_builder.GetILGenerator();

            cg.Emit(OpCodes.Ldarg_0);
            cg.Emit(OpCodes.Ldarg_1);
            cg.Emit(OpCodes.Ldarg_2);
            cg.Emit(OpCodes.Call, parent_ctor);
            cg.Emit(OpCodes.Ret);

            return(impl_type_builder.CreateType());
        }
示例#53
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    void ProcessTouch()
    {
        for (int i = 0; i < Input.touches.Length; ++i)
        {
            Touch touch = Input.touches[i];
            if (touch.fingerId >= 10)
            {
                continue;
            }

            TouchState touchState  = null;
            exUIElement hotElement = PickElement(touch.position);

            //
            if (touch.phase == TouchPhase.Began)
            {
                if (hotElement != null)
                {
                    exUIEvent e = new exUIEvent();
                    e.category = exUIEvent.Category.Touch;
                    e.type     = exUIEvent.Type.TouchDown;
                    e.position = touch.position;
                    e.delta    = touch.deltaPosition;
                    e.touchID  = touch.fingerId;

                    EventInfo info = new EventInfo();
                    info.primaryElement = hotElement;
                    info.uiEvent        = e;
                    eventInfoList.Add(info);
                }

                // NOTE: it must be null
                SetTouchFocus(touch.fingerId, null);
                touchStateList[touch.fingerId].hotElement = hotElement;
            }
            else
            {
                // find the touch state
                touchState = touchStateList[touch.fingerId];

                // set the last and current hot element
                exUIElement focusElement   = null;
                exUIElement lastHotElement = null;
                if (touchState != null)
                {
                    lastHotElement        = touchState.hotElement;
                    touchState.hotElement = hotElement;
                    focusElement          = touchState.focusElement;
                }

                if (touch.phase == TouchPhase.Ended)
                {
                    if (touchState != null)
                    {
                        if (focusElement != null)
                        {
                            exUIEvent e = new exUIEvent();
                            e.category = exUIEvent.Category.Touch;
                            e.type     = exUIEvent.Type.TouchUp;
                            e.position = touch.position;
                            e.delta    = touch.deltaPosition;
                            e.touchID  = touch.fingerId;

                            EventInfo info = new EventInfo();
                            info.primaryElement = focusElement;
                            info.uiEvent        = e;
                            eventInfoList.Add(info);
                        }
                    }
                }
                else if (touch.phase == TouchPhase.Canceled)
                {
                    if (touchState != null)
                    {
                        SetTouchFocus(touch.fingerId, null);
                    }
                }
                else if (touch.phase == TouchPhase.Moved)
                {
                    // process hover event
                    if (lastHotElement != hotElement)
                    {
                        // add hover-in event
                        if (hotElement != null)
                        {
                            exUIEvent e = new exUIEvent();
                            e.category = exUIEvent.Category.Touch;
                            e.type     = exUIEvent.Type.TouchEnter;
                            e.position = touch.position;
                            e.delta    = touch.deltaPosition;
                            e.touchID  = touch.fingerId;

                            EventInfo info = new EventInfo();
                            info.primaryElement = hotElement;
                            info.uiEvent        = e;
                            eventInfoList.Add(info);
                        }

                        // add hover-out event
                        if (lastHotElement != null)
                        {
                            exUIEvent e = new exUIEvent();
                            e.category = exUIEvent.Category.Touch;
                            e.type     = exUIEvent.Type.TouchExit;
                            e.position = touch.position;
                            e.delta    = touch.deltaPosition;
                            e.touchID  = touch.fingerId;

                            EventInfo info = new EventInfo();
                            info.primaryElement = lastHotElement;
                            info.uiEvent        = e;
                            eventInfoList.Add(info);
                        }
                    }

                    //
                    if (hotElement != null || focusElement != null)
                    {
                        exUIEvent e = new exUIEvent();
                        e.category = exUIEvent.Category.Touch;
                        e.type     = exUIEvent.Type.TouchMove;
                        e.position = touch.position;
                        e.delta    = touch.deltaPosition;
                        e.touchID  = touch.fingerId;

                        EventInfo info = new EventInfo();
                        info.primaryElement = (focusElement != null) ? focusElement : hotElement;
                        info.uiEvent        = e;
                        eventInfoList.Add(info);
                    }
                }
            }
        }
    }
示例#54
0
 public AutoCompleteItem(EventInfo eventInfo)
     : this(eventInfo.Name, eventInfo.Name, eventInfo.MemberType, eventInfo.EventHandlerType)
 {
 }
示例#55
0
 private Event(EventInfo @event)
     : base(@event)
 {
     addMethod    = @event.AddMethod?.CreateDelegate <Action <D> >();
     removeMethod = @event.RemoveMethod?.CreateDelegate <Action <D> >();
 }
示例#56
0
 public static MethodInfo?GetRemoveMethod(EventInfo eventInfo, bool nonPublic)
 {
     Requires.NotNull(eventInfo, nameof(eventInfo));
     return(eventInfo.GetRemoveMethod(nonPublic));
 }
示例#57
0
 private protected EventBase(EventInfo @event)
 {
     this.@event = @event;
 }
示例#58
0
 public static MethodInfo?GetRaiseMethod(EventInfo eventInfo)
 {
     Requires.NotNull(eventInfo, nameof(eventInfo));
     return(eventInfo.GetRaiseMethod());
 }
 protected override EventInfo MapEventCore(EventInfo eventInfo) => new ProjectedReflectionTableEventInfo(eventInfo, this);
示例#60
0
 public void OnComplete(EventInfo info)
 {
     transform.position = spawnPoint;
     transform.rotation = spawnRotation;
     Fade(true);
 }