Пример #1
0
  /**
   * Get the value of a field. If the field is a primitive type, it will return a class representing
   * the value. For arrays or nodes it will return the instance directly.
   *
   * @param index The index of the field to change.
   * @return The class representing the field value
   * @throws InvalidFieldException The field index is not known
   */
  public VRMLFieldData getFieldValue(int index) throws InvalidFieldException {
    VRMLFieldData fieldData = fieldLocalData.get();

    switch (index) {
      case FIELD_BBOX_SIZE:
        fieldData.clear();
        fieldData.floatArrayValue = bboxSize;
        fieldData.dataType = VRMLFieldData.FLOAT_ARRAY_DATA;
        fieldData.numElements = 1;
        break;

      case FIELD_BBOX_CENTER:
        fieldData.clear();
        fieldData.floatArrayValue = bboxCenter;
        fieldData.dataType = VRMLFieldData.FLOAT_ARRAY_DATA;
        fieldData.numElements = 1;
        break;

      case FIELD_CHILDREN:
        fieldData.clear();

        VRMLNodeType[] kids = new VRMLNodeType[vfChildren.size()];
        vfChildren.toArray(kids);

        fieldData.nodeArrayValue = kids;
        fieldData.dataType = VRMLFieldData.NODE_ARRAY_DATA;
        fieldData.numElements = childCount;
        break;

      default:
        super.getFieldValue(index);
    }

    return fieldData;
  }
Пример #2
0
  /**
   * Get the value of a field. If the field is a primitive type, it will return a class representing
   * the value. For arrays or nodes it will return the instance directly.
   *
   * @param index The index of the field to change.
   * @return The class representing the field value
   * @throws InvalidFieldException The field index is not known
   */
  public VRMLFieldData getFieldValue(int index) throws InvalidFieldException {
    VRMLFieldData fieldData = fieldLocalData.get();

    switch (index) {
      case FIELD_NAME:
        fieldData.clear();
        fieldData.numElements = 1;
        fieldData.dataType = VRMLFieldData.STRING_DATA;
        fieldData.stringValue = vfName;
        break;
      case FIELD_SHAPE:
        fieldData.clear();
        if (pShape != null) fieldData.nodeValue = pShape;
        else fieldData.nodeValue = vfShape;
        fieldData.dataType = VRMLFieldData.NODE_DATA;
        break;

      case FIELD_BBOX_SIZE:
        fieldData.clear();
        fieldData.floatArrayValue = vfBboxSize;
        fieldData.dataType = VRMLFieldData.FLOAT_ARRAY_DATA;
        fieldData.numElements = 1;
        break;

      case FIELD_BBOX_CENTER:
        fieldData.clear();
        fieldData.floatArrayValue = vfBboxCenter;
        fieldData.dataType = VRMLFieldData.FLOAT_ARRAY_DATA;
        fieldData.numElements = 1;
        break;

      default:
        super.getFieldValue(index);
    }

    return fieldData;
  }