//------------------------------------------------------------------------------------------------------------------------ // HitTest() //------------------------------------------------------------------------------------------------------------------------ public override bool HitTest(Collider other) { if (other is BoxCollider) { BoxCollider boxCollider = other as BoxCollider; Sprite sprite1 = this._owner; Sprite sprite2 = boxCollider._owner; float sprite1Left = sprite1.x - sprite1.originX; float sprite1Right = sprite1.x + sprite1.width - sprite1.originX; float sprite2Left = sprite2.x - sprite2.originX; float sprite2Right = sprite2.x + sprite2.width - sprite2.originX; if (sprite1Left > sprite2Right) return false; if (sprite2Left > sprite1Right) return false; float sprite1Top = sprite1.y - sprite1.originY; float sprite1Bottom = sprite1.y + sprite1.height - sprite1.originY; float sprite2Top = sprite2.y - sprite2.originY; float sprite2Bottom = sprite2.y + sprite2.height - sprite2.originY; if (sprite1Top > sprite2Bottom) return false; if (sprite2Top > sprite1Bottom) return false; return true; } else { return false; } }
//------------------------------------------------------------------------------------------------------------------------ // GameObject() //------------------------------------------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="GXPEngine.GameObject"/> class. /// Since GameObjects contain a display hierarchy, a GameObject can be used as a container for other objects. /// Other objects can be added using child commands as AddChild. /// </summary> /// <param name="addCollider"> /// If <c>true</c>, then the virtual function createCollider will be called, which can be overridden to create a collider that /// will be added to the collision manager. /// </param> public GameObject(bool addCollider = false) { if (addCollider) { _collider = createCollider(); } }
//------------------------------------------------------------------------------------------------------------------------ // HitTest() //------------------------------------------------------------------------------------------------------------------------ public override bool HitTest (Collider other) { if (other is BoxCollider) { Vector2[] c = _owner.GetExtents(); if (c == null) return false; Vector2[] d = ((BoxCollider)other)._owner.GetExtents(); if (d == null) return false; if (!areaOverlap(c, d)) return false; return areaOverlap(d, c); } else { return false; } }
//------------------------------------------------------------------------------------------------------------------------ // GameObject() //------------------------------------------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="GXPEngine.GameObject"/> class. /// Since GameObjects contain a display hierarchy, a GameObject can be used as a container for other objects. /// Other objects can be added using child commands as AddChild. /// </summary> public GameObject() { _collider = createCollider(); if (Game.main != null) Game.main.Add(this); }
//------------------------------------------------------------------------------------------------------------------------ // HitTest() //------------------------------------------------------------------------------------------------------------------------ public virtual bool HitTest (Collider other) { return false; }