コード例 #1
0
        public override IObservable <EventPattern <Geom, GeomCollisionEventArgs> > Process(IObservable <Geom> source)
        {
            return(source.SelectMany(geom =>
            {
                var metadata = geom.Tag as GeomMetadata;
                if (metadata == null)
                {
                    throw new InvalidOperationException("Collision geom must have a valid metadata object.");
                }

                return Observable.Create <EventPattern <Geom, GeomCollisionEventArgs> >(observer =>
                {
                    CollisionEventHandler handler = (g1, g2, contacts, length) =>
                    {
                        if (IncludeContacts)
                        {
                            var output = new ContactGeom[length];
                            Array.Copy(contacts, output, length);
                            contacts = output;
                        }
                        else
                        {
                            contacts = EmptyContacts;
                        }
                        observer.OnNext(new EventPattern <Geom, GeomCollisionEventArgs>(g1, new GeomCollisionEventArgs(g2, contacts)));
                    };

                    metadata.Collision += handler;
                    return Disposable.Create(() => metadata.Collision -= handler);
                });
            }));
        }
コード例 #2
0
ファイル: PlayerMaster.cs プロジェクト: Raelr/Game-Studio-1
        // Initialises all variables and assigns appropriate delegates.
        public override void Initialise()
        {
            base.Initialise();

            playerLost = false;

            updateEvent += movementController.RotateEntity;

            updateEvent += movementController.MultiplyPoints;

            onPlayerCollision += playerProperties.DecaySanityByAmount;

            onPlayerCollision += sounds.PlayerImpactSound;
        }
コード例 #3
0
 // 主线程循环
 internal static void MainThreadUpdate()
 {
     FocusEventHandler.MainThreadUpdate();
     ScreenResizeEventHandler.MainThreadUpdate();
     CollisionEventHandler.MainThreadUpdate();
     TriggerEventHandler.MainThreadUpdate();
     PointerEventHandlerForScreen.MainThreadUpdate();
     PointerEventHandlerForUI.MainThreadUpdate();
     PointerEventHandlerForMesh.MainThreadUpdate();
     KeyboardEventHandler.MainThreadUpdate();
     FrameLoopEventHandler.MainThreadUpdate();
     IntervalEventHandler.MainThreadUpdate();
     CustomEventHandler.MainThreadUpdate();
     TraceEventHandler.MainThreadUpdate();
 }
コード例 #4
0
    private static void HandleEntityDeath(GameObject gameObject, Health healthComponent)
    {
        if (healthComponent.CurrentHealth > 0)
        {
            return;
        }

        if (gameObject.CompareTag(Tags.ENEMY))
        {
            CollisionEventHandler enemyObject = gameObject.GetComponent <CollisionEventHandler>();
            enemyObject.baseAI.DeathAnimation();
        }
        else if (gameObject.CompareTag(Tags.PLAYER))
        {
            PlayerController playerController = gameObject.GetComponent <PlayerController>();
            playerController.Death();
        }
    }
コード例 #5
0
 public void Clear()
 {
     ClearDirtyData();
     m_parent                      = null;
     m_Speed                       = 1.0f;
     m_SizeScale                   = 1.0f;
     m_isEnemy                     = false;
     m_entityID                    = -1;
     m_SrcTransform                = null;
     m_DstTransform                = null;
     m_effectColliderLayer         = -1;
     m_broadcastfuncName           = string.Empty;
     m_playMask                    = 0;
     m_bPlay                       = false;
     m_AddhitEvent                 = null;
     m_AddAttackCollisionHandle    = null;
     m_ReducehitEvent              = null;
     m_ReduceAttackCollisionHandle = null;
     m_Attack_nFeedBackID          = 0;
     m_Attack_nAttackEntityID      = 0;
     m_Attack_bEnableCollision     = false;
     m_Attack_eventHandlerCount    = 0;
     m_bRePlay                     = false;
 }
コード例 #6
0
 public void AddCollisionEvent(CollisionEvent collisionEvent, CollisionEventHandler handler)
 {
     _events[collisionEvent] += handler;
 }
コード例 #7
0
ファイル: Grid.cs プロジェクト: alexander-jones/Kinect-Snake
 public CollisionHandler(IGridAsset act, CollisionEventHandler a)
 {
     actuator = act;
     action = a;
 }
コード例 #8
0
 /// <summary> 移除碰撞事件侦听 ( Mesh ) </summary>
 /// <param name="target">侦听对象 ( Mesh GameObject ) </param>
 /// <param name="listener">碰撞事件侦听函数 ( Params - 侦听对象,碰撞事件类型,碰撞数据 ) </param>
 public void RemoveCollisionListenerForMesh(GameObject target, Action <GameObject, CollisionEventType, Collision> listener)
 => CollisionEventHandler.RemoveListener(target, listener);
コード例 #9
0
 /// <summary> 添加碰撞事件侦听 ( Mesh ) </summary>
 /// <param name="target">侦听对象 ( Mesh GameObject ) </param>
 /// <param name="listener">碰撞事件侦听函数 ( Params - 侦听对象,碰撞事件类型,碰撞数据 ) </param>
 /// <param name="priority">设置侦听函数执行优先级,数值越高优先级越高。同数值情况下,先添加的侦听函数优先级更高,默认为 0 </param>
 public void AddCollisionListenerForMesh(GameObject target, Action <GameObject, CollisionEventType, Collision> listener, int priority = 0)
 => CollisionEventHandler.AddListener(target, listener, priority);