/// <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))
            });
示例#2
0
 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;
 }
示例#3
0
 internal void AddCollider(ColliderNode node)
 {
     collisionCollection.Add(node);
 }
示例#4
0
 internal void RemoveCollider(ColliderNode node)
 {
     collisionCollection.Remove(node);
 }
示例#5
0
 /// <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);