protected override void OnUpdate() { if (!UpdateState()) { return; } RaycastInput rayInput = RaycastUtils.RaycastInputFromRay( _mainCamera.ScreenPointToRay(Input.mousePosition), _filter ); var raycastJob = new RaycastUtils.SingleRaycastJob { raycastInput = rayInput, physicsWorld = _physicsWorld }; raycastJob.Execute(); if (!raycastJob.hasHit) { return; } NativeEventStream.ThreadWriter writer = _eventSystem.CreateEventWriter <TEvent>(); writer.Write(EventFromRaycastHit(raycastJob.hit, _state)); _eventSystem.AddJobHandleForProducer <TEvent>(Dependency); }