/// <summary> /// 指定した<see cref="ColliderNode"/>の当たり判定領域を表示するノードを生成します。 /// </summary> /// <param name="colliderNode">使用するコライダノード</param> /// <exception cref="ArgumentException"> /// <paramref name="colliderNode"/>の型がサポートされていない型である /// (<see cref="CircleColliderNode"/>,<see cref="PolygonColliderNode"/>,<see cref="RectangleColliderNode"/>若しくはそれらから派生した型ではない) /// </exception> /// <exception cref="InvalidOperationException">Graphics機能が初期化されていない。</exception> /// <exception cref="ArgumentNullException"><paramref name="colliderNode"/>がnull</exception> /// <returns><paramref name="colliderNode"/>の当たり領域を表示するノード</returns> public static Node Create(ColliderNode colliderNode) { if (!Engine.Config.EnabledCoreModules.HasFlag(CoreModules.Graphics)) { throw new InvalidOperationException("Graphics機能が初期化されていません。"); } if (colliderNode == null) { throw new ArgumentNullException(nameof(colliderNode), "引数がnullです"); } return(colliderNode switch { CircleColliderNode c => new CircleColliderVisualizeNode(c), PolygonColliderNode p => new PolygonColliderVisualizeNode(p), RectangleColliderNode r => new RectangleColliderVisualizeNode(r), _ => throw new ArgumentException($"サポートされていない型です\n型:{colliderNode.GetType()}", nameof(colliderNode)) });
internal CollisionInfo(ColliderNode selfCollider, ColliderNode theirsCollider, CollisionType type) { SelfCollider = selfCollider ?? throw new ArgumentNullException(nameof(selfCollider), "引数がnullです"); TheirsCollider = theirsCollider ?? throw new ArgumentNullException(nameof(theirsCollider), "引数がnullです"); CollisionType = type; }
internal void AddCollider(ColliderNode node) { collisionCollection.Add(node); }
internal void RemoveCollider(ColliderNode node) { collisionCollection.Remove(node); }
/// <summary> /// 指定した<see cref="ColliderNode"/>が格納されているかどうかを返します。 /// </summary> /// <param name="node">検索する<see cref="ColliderNode"/></param> /// <returns><paramref name="node"/>が格納されていたらtrue,それ以外でfalse</returns> public bool ContainsCollider(ColliderNode node) => collisionCollection.Contains(node);