/**
  * Get a single world by it's ID
  *
  * @param id the ID
  * @return the world
  */
 @RequestMapping("/{id}")
 @ResponseBody
 public WorldModel get(@PathVariable("id") final String id) {
   WorldModel worldModel = new WorldModel();
   worldModel.setId(id);
   worldModel.setName("Middle Earth");
   worldModel.setDescription("The world of The Hobbit and The Lord of the Rings");
   worldModel.setCreationDate(OffsetDateTime.now());
   worldModel.setOwner(new UserLink());
   worldModel.getOwner().setId(UUID.randomUUID().toString());
   worldModel.getOwner().setName("Tolkien");
   return worldModel;
 }
Exemple #2
0
  /**
   * An entity was removed. If the removed Entity was selected, disable the copy function until a
   * new Entity is selected.
   *
   * @param local Was this action initiated from the local UI
   * @param entity The entity being removed from the view
   */
  public void entityRemoved(boolean local, Entity entity) {

    Entity[] entities = model.getModelData();
    Entity check;

    setEnabled(false);
    for (int i = 0; i < entities.length; i++) {
      check = entities[i];

      if (check != null) {
        setEnabled(true);
        break;
      }
    }
  }
Exemple #3
0
  /**
   * Output a specific entity to the specified stream.
   *
   * @param model The world model to export
   * @param entityID The entity to export
   * @param mainScene The X3D scene to write to
   */
  public X3DNode export(WorldModel model, int entityID, X3DScene mainScene, String worldURL) {

    // get the entity
    Entity entity = model.getEntity(entityID);

    if (entity == null) {
      errorReporter.messageReport("Cannot find model to export: " + entityID);
      return null;
    }

    if (entity.isController()) {
      return null;
    }

    try {

      X3DNode group;

      // if the entity has a position then place it
      if (entity instanceof PositionableEntity) {

        double[] position = new double[3];
        float[] rotation = new float[4];
        float[] scale = new float[3];

        ((PositionableEntity) entity).getPosition(position);
        ((PositionableEntity) entity).getRotation(rotation);
        ((PositionableEntity) entity).getScale(scale);

        float[] pos = new float[] {(float) position[0], (float) position[1], (float) position[2]};

        // create the transform group node
        group = mainScene.createNode("Transform");
        SFVec3f translationField = (SFVec3f) (group.getField("translation"));
        translationField.setValue(pos);
        SFRotation rotationField = (SFRotation) (group.getField("rotation"));
        rotationField.setValue(rotation);
        SFVec3f scaleField = (SFVec3f) (group.getField("scale"));
        scaleField.setValue(scale);

      } else {

        // create the transform group node
        group = mainScene.createNode("Group");
      }

      // create the inline node
      String url = worldURL + entity.getModelURL();

      X3DNode inline = mainScene.createNode("Inline");
      MFString urlField = (MFString) (inline.getField("url"));
      urlField.setValue(1, new String[] {url});

      // grab the child node to append to
      MFNode childrenField = (MFNode) (group.getField("children"));

      // add inline to the group/transform
      childrenField.append(inline);

      return group;

    } catch (Exception ex) {
      errorReporter.errorReport("Error.", ex);
    }

    return null;
  }