/// <summary>
        /// Constructs an object placement rule requiring the placement volume to
        /// be placed a minimum distance away from other placed objects
        /// </summary>
        /// <param name="minDistance">Minimum distance from other placed objects</param>
        /// <returns>Constructed object placement rule</returns>
        public static ObjectPlacementRule Create_AwayFromOtherObjects(float minDistance)
        {
            ObjectPlacementRule rule = new ObjectPlacementRule();

            rule.Type = ObjectPlacementRuleType.Rule_AwayFromOtherObjects;
            rule.RuleParam_Float_0 = minDistance;
            return(rule);
        }
        /// <summary>
        /// Constructs an object placement rule requiring the placement volume to
        /// be placed a minimum distance away from any wall
        /// </summary>
        /// <param name="minDistance">Minimum distance from a wall</param>
        /// <param name="minWallHeight">Minimum height of a wall to be considered by this rule</param>
        /// <returns>Constructed object placement rule</returns>
        public static ObjectPlacementRule Create_AwayFromWalls(float minDistance, float minWallHeight = 0.0f)
        {
            ObjectPlacementRule rule = new ObjectPlacementRule();

            rule.Type = ObjectPlacementRuleType.Rule_AwayFromWalls;
            rule.RuleParam_Float_0 = minDistance;
            rule.RuleParam_Float_1 = minWallHeight;
            return(rule);
        }
        /// <summary>
        /// Constructs an object placement rule requiring the placement volume to
        /// be placed a minimum distance away from the specified position.
        /// </summary>
        /// <param name="position">Defines the center position for the center of the invalid placement space.</param>
        /// <param name="minDistance">Defines the radius of the invalid placement space.</param>
        /// <returns>Constructed object placement rule</returns>
        public static ObjectPlacementRule Create_AwayFromPosition(Vector3 position, float minDistance)
        {
            ObjectPlacementRule rule = new ObjectPlacementRule();

            rule.Type              = ObjectPlacementRuleType.Rule_AwayFromPosition;
            rule.RuleParam_Vec3_0  = position;
            rule.RuleParam_Float_0 = minDistance;
            return(rule);
        }
 /// <summary>
 /// Constructs an object placement rule requiring the placement volume to
 /// be placed a minimum distance away from other placed objects
 /// </summary>
 /// <param name="minDistance">Minimum distance from other placed objects</param>
 /// <returns>Constructed object placement rule</returns>
 public static ObjectPlacementRule Create_AwayFromOtherObjects(float minDistance)
 {
     ObjectPlacementRule rule = new ObjectPlacementRule();
     rule.Type = ObjectPlacementRuleType.Rule_AwayFromOtherObjects;
     rule.RuleParam_Float_0 = minDistance;
     return rule;
 }
 /// <summary>
 /// Constructs an object placement rule requiring the placement volume to
 /// be placed a minimum distance away from any wall
 /// </summary>
 /// <param name="minDistance">Minimum distance from a wall</param>
 /// <param name="minWallHeight">Minimum height of a wall to be considered by this rule</param>
 /// <returns>Constructed object placement rule</returns>
 public static ObjectPlacementRule Create_AwayFromWalls(float minDistance, float minWallHeight = 0.0f)
 {
     ObjectPlacementRule rule = new ObjectPlacementRule();
     rule.Type = ObjectPlacementRuleType.Rule_AwayFromWalls;
     rule.RuleParam_Float_0 = minDistance;
     rule.RuleParam_Float_1 = minWallHeight;
     return rule;
 }
 /// <summary>
 /// Constructs an object placement rule requiring the placement volume to
 /// be placed a minimum distance away from the specified position.
 /// </summary>
 /// <param name="position">Defines the center position for the center of the invalid placement space.</param>
 /// <param name="minDistance">Defines the radius of the invalid placement space.</param>
 /// <returns>Constructed object placement rule</returns>
 public static ObjectPlacementRule Create_AwayFromPosition(Vector3 position, float minDistance)
 {
     ObjectPlacementRule rule = new ObjectPlacementRule();
     rule.Type = ObjectPlacementRuleType.Rule_AwayFromPosition;
     rule.RuleParam_Vec3_0 = position;
     rule.RuleParam_Float_0 = minDistance;
     return rule;
 }