content: package emu.grasscutter.scripts.data;
  
  import emu.grasscutter.scripts.constants.ScriptRegionShape;
  import emu.grasscutter.utils.Position;
  import lombok.Setter;
  
  
  @Setter
  public class SceneRegion {
      public int config_id;
      public int shape;
      public Position pos;
      // for CUBIC
      public Position size;
      // for SPHERE
      public int radius;
  
      public transient SceneGroup group;
      public boolean contains(Position position) {
          switch (shape) {
              case ScriptRegionShape.CUBIC:
                  return (Math.abs(pos.getX() - position.getX()) <= size.getX()) &&
                         (Math.abs(pos.getY() - position.getY()) <= size.getY()) &&
                         (Math.abs(pos.getZ() - position.getZ()) <= size.getZ());
              case ScriptRegionShape.SPHERE:
                  var x = Math.pow(pos.getX() - position.getX(), 2);
                  var y = Math.pow(pos.getY() - position.getY(), 2);
                  var z = Math.pow(pos.getZ() - position.getZ(), 2);
                  // ^ means XOR in java!
                  return x + y + z <= (radius*radius);
          }
          return false;
      }
  
  }
  