Search in sources :

Example 1 with Scene

use of com.talosvfx.talos.editor.addons.scene.logic.Scene in project talos by rockbite.

the class SceneEditorProject method createWorkspaceEnvironment.

@Override
public void createWorkspaceEnvironment(String path, String name) {
    name.replace("/", "");
    name.replace("\\", "");
    FileHandle parent = Gdx.files.absolute(path);
    FileHandle projectDir = Gdx.files.absolute(parent.path() + File.separator + name);
    projectDir.mkdirs();
    FileHandle assetsDir = Gdx.files.absolute(projectDir.path() + File.separator + "assets");
    assetsDir.mkdirs();
    // now save the project here
    sceneEditorAddon.workspace.setProjectPath(projectDir.path());
    FileHandle projectFile = Gdx.files.absolute(projectDir.path() + File.separator + name + SceneEditorAddon.SE.getExtension());
    // create new scene
    Scene mainScene = new Scene(projectDir.path() + File.separator + "scenes" + File.separator + "main_scene.scn");
    mainScene.save();
    sceneEditorAddon.workspace.openSavableContainer(mainScene);
    // now create main camera
    sceneEditorAddon.workspace.createObjectByTypeName("camera", new Vector2(0, 0), null);
    TalosMain.Instance().ProjectController().saveProject(projectFile);
    sceneEditorAddon.workspace.reloadProjectExplorer();
    sceneEditorAddon.projectExplorer.select(mainScene.path);
    Notifications.fireEvent(Notifications.obtainEvent(ProjectOpened.class));
}
Also used : Vector2(com.badlogic.gdx.math.Vector2) FileHandle(com.badlogic.gdx.files.FileHandle) Scene(com.talosvfx.talos.editor.addons.scene.logic.Scene) ProjectOpened(com.talosvfx.talos.editor.addons.scene.events.ProjectOpened)

Example 2 with Scene

use of com.talosvfx.talos.editor.addons.scene.logic.Scene in project talos by rockbite.

the class ProjectExplorerWidget method showContextMenu.

public void showContextMenu(Array<FileHandle> files) {
    contextualMenu.clearItems();
    contextualMenu.addItem("Cut", new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            invokeCut(files);
        }
    });
    contextualMenu.addItem("Copy", new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            invokeCopy(files);
        }
    });
    contextualMenu.addItem("Paste", new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            FileHandle destination = files.first();
            invokePaste(destination);
        }
    });
    contextualMenu.addSeparator();
    contextualMenu.addItem("Rename", new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            String path = files.first().path();
            if (path != null) {
                FileHandle handle = Gdx.files.absolute(path);
                if (handle.isDirectory()) {
                    if (nodes.get(path) != null) {
                        RowWidget widget = (RowWidget) nodes.get(path).getActor();
                        widget.label.setEditMode();
                    }
                } else {
                    // check if its in the other guy
                    directoryViewWidget.startRenameFor(handle);
                }
            }
        }
    });
    contextualMenu.addItem("Delete", new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            String path = files.first().path();
            Array<String> paths = new Array<>();
            for (FileHandle file : files) {
                paths.add(file.path());
            }
            deletePath(paths);
        }
    });
    if (files.size == 1 && files.first().isDirectory()) {
        contextualMenu.addSeparator();
        PopupMenu popupMenu = new PopupMenu();
        createSubMenuItem(popupMenu, "New Directory", new ClickListener() {

            @Override
            public void clicked(InputEvent event, float x, float y) {
                String path = files.first().path();
                if (path != null) {
                    FileHandle handle = Gdx.files.absolute(path);
                    if (handle.isDirectory()) {
                        FileHandle newHandle = findAvailableHandleIn(handle, "New Directory");
                        newHandle.mkdirs();
                        loadDirectoryTree((String) rootNode.getObject());
                        FilteredTree.Node newNode = nodes.get(newHandle.path());
                        expand(newHandle.path());
                        select(newNode.getParent());
                        RowWidget widget = (RowWidget) newNode.getActor();
                        directoryViewWidget.reload();
                        directoryViewWidget.startRenameFor(newHandle);
                    }
                }
            }
        });
        createSubMenuItem(popupMenu, "New Scene", new ClickListener() {

            @Override
            public void clicked(InputEvent event, float x, float y) {
                String path = files.first().path();
                FileHandle sceneDestination = AssetImporter.suggestNewName(path, "New Scene", "scn");
                Scene mainScene = new Scene(sceneDestination.path());
                mainScene.save();
                directoryViewWidget.reload();
            }
        });
        createSubMenuItem(popupMenu, "Particle Effect", new ClickListener() {

            @Override
            public void clicked(InputEvent event, float x, float y) {
                String path = files.first().path();
                FileHandle tlsDestination = AssetImporter.suggestNewName(path, "New Effect", "tls");
                FileHandle metadataHandle = AssetImporter.makeSimilar(tlsDestination, "meta");
                FileHandle originalTls = Gdx.files.internal("addons/scene/missing/sample.tls");
                originalTls.copyTo(tlsDestination);
                TlsMetadata metadata = new TlsMetadata();
                metadata.tlsChecksum = AssetImporter.checkSum(tlsDestination);
                AssetImporter.saveMetadata(metadataHandle, metadata);
                directoryViewWidget.reload();
            }
        });
        MenuItem createMenu = contextualMenu.addItem("Create", new ClickListener() {

            @Override
            public void clicked(InputEvent event, float x, float y) {
                super.clicked(event, x, y);
            }
        });
        createMenu.setSubMenu(popupMenu);
    }
    contextualMenu.show(getStage());
}
Also used : FileHandle(com.badlogic.gdx.files.FileHandle) TlsMetadata(com.talosvfx.talos.editor.addons.scene.utils.metadata.TlsMetadata) MenuItem(com.kotcrab.vis.ui.widget.MenuItem) Scene(com.talosvfx.talos.editor.addons.scene.logic.Scene) Array(com.badlogic.gdx.utils.Array) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) ClickListener(com.badlogic.gdx.scenes.scene2d.utils.ClickListener) PopupMenu(com.kotcrab.vis.ui.widget.PopupMenu)

Aggregations

FileHandle (com.badlogic.gdx.files.FileHandle)2 Scene (com.talosvfx.talos.editor.addons.scene.logic.Scene)2 Vector2 (com.badlogic.gdx.math.Vector2)1 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)1 ClickListener (com.badlogic.gdx.scenes.scene2d.utils.ClickListener)1 Array (com.badlogic.gdx.utils.Array)1 MenuItem (com.kotcrab.vis.ui.widget.MenuItem)1 PopupMenu (com.kotcrab.vis.ui.widget.PopupMenu)1 ProjectOpened (com.talosvfx.talos.editor.addons.scene.events.ProjectOpened)1 TlsMetadata (com.talosvfx.talos.editor.addons.scene.utils.metadata.TlsMetadata)1