view src/main/java/alice/test/topology/aquarium/fx/CreateObject.java @ 547:e91a574b69de dispose

remove index
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 18 Aug 2015 16:15:17 +0900
parents 15eeb439830c
children
line wrap: on
line source

package alice.test.topology.aquarium.fx;

import javafx.beans.binding.When;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.MeshView;

import com.interactivemesh.jfx.importer.col.ColModelImporter;
import com.interactivemesh.jfx.importer.obj.ObjModelImporter;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;

public class CreateObject extends CodeSegment{

    private Receiver info = ids.create(CommandType.TAKE);  // fishInfo
    private Receiver info1 = ids.create(CommandType.PEEK);  // fishInfo

    public CreateObject(){
        info.setKey("fishData", this);
        info1.setKey("type", this);

    }

    @Override
    public void run() {
        FishInfo fishInfo = info.asClass(FishInfo.class);

        Group obj = new Group();
        addColladaObject(obj);

        obj.setScaleX(fishInfo.size);
        obj.setScaleY(fishInfo.size);
        obj.setScaleZ(fishInfo.size);
        obj.setId(fishInfo.name);

        ods.put("addOffer", obj);
        if (!fishInfo.fromCheckExist)
            new SendDataOthers(info, "fishData");

        new CreateObject();
    }

    // for read *.obj file
    public void addObject(Group obj){
        BooleanProperty showWireframe = new SimpleBooleanProperty(false);
        ObjModelImporter objImporter = new ObjModelImporter();
        objImporter.read(getClass().getClassLoader().getResource("objects/Scooter-smgrps.obj"));

        MeshView[] dukeMesh = objImporter.getImport();
        objImporter.close();

        for (MeshView _dukeMesh : dukeMesh) {
            obj.getChildren().addAll(_dukeMesh);
            _dukeMesh.drawModeProperty().bind(new When(showWireframe).then(DrawMode.LINE).otherwise(DrawMode.FILL));
        }
    }

    // for read *.dae file
    public void addColladaObject(Group obj){
        String url = getResourceUrl();
        ColModelImporter colImporter = new ColModelImporter();
        colImporter.read(getClass().getClassLoader().getResource(url));
        Node[] node = colImporter.getImport();
        obj.getChildren().add(node[0]);
    }

    public String getResourceUrl() {
        String type = info1.asString();
        System.out.println(type);
        for (FishType f :FishType.values()){
            if (type.equals(f.name())){
                return f.getUrl();
            }
        }
        return FishType.DEFAULT.getUrl();
    }

}