示例#1
0
 public static bool HasFlag(this ItemCollisionType value, ItemCollisionType comparison)
 {
     if ((value & comparison) == comparison)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#2
0
        public static ItemCollisionType CheckAllCollisionsTree(Vector3 worldPosition, TreeInfo treeInfo)
        {
            ItemCollisionType _result = ItemCollisionType.None;

            Vector2 _center = VectorUtils.XZ(worldPosition);
            float   _radius = 0.5f;
            Quad2   _quad   = default(Quad2);

            _quad.a = _center + new Vector2(-_radius, -_radius);
            _quad.b = _center + new Vector2(-_radius, _radius);
            _quad.c = _center + new Vector2(_radius, _radius);
            _quad.d = _center + new Vector2(_radius, -_radius);

            float _minY = worldPosition.y;
            float _maxY = worldPosition.y + treeInfo.m_generatedInfo.m_size.y * Mathf.Max(treeInfo.m_maxScale, treeInfo.m_minScale);

            ItemClass.CollisionType _collisionType = ItemClass.CollisionType.Terrain;

            if (DoesTreeCollideWithProps(_quad, _minY, _maxY, _collisionType, treeInfo))
            {
                _result |= ItemCollisionType.Props;
            }
            if (DoesTreeCollideWithTrees(_quad, _minY, _maxY, _collisionType, treeInfo))
            {
                _result |= ItemCollisionType.Trees;
            }
            if (CheckTreeBlocked(_quad, _minY, _maxY, _collisionType, treeInfo))
            {
                _result |= ItemCollisionType.Blocked;
            }
            if (DoesPositionHaveWater(worldPosition))
            {
                _result |= ItemCollisionType.Water;
            }
            if (IsQuadOutOfGameArea(_quad))
            {
                _result |= ItemCollisionType.GameArea;
            }


            return(_result);
        }