/** * 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; }
/** * 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; }