Coder Social home page Coder Social logo

hide's Introduction

Hide

CI

image

Hide (Heaps IDE) is an extensible editor that can be used as a middleware for various tasks, such as:

  • preview 3D models and textures
  • edit materials properties
  • create timeline based visual effects and movements
  • create whole 3D levels, place lights, paint terrain, bake shadow maps and volumetric light maps
  • create and edit 2D and 3D particles systems
  • edit and modify your Castle Database
  • extend by adding game specific prefabs
  • extend with your own game specific editors

Nightly builds

If you don't want to build Hide from source, you can download a nightly build from here.

Compiling from source

1. Install Prerequisites

haxelib git heaps https://github.com/HeapsIO/heaps
haxelib git castle https://github.com/ncannasse/castle
haxelib git hxbit https://github.com/ncannasse/hxbit
haxelib git hscript https://github.com/HaxeFoundation/hscript
haxelib git hxnodejs https://github.com/HaxeFoundation/hxnodejs
haxelib git domkit https://github.com/HeapsIO/domkit
haxelib git hx3compat https://github.com/HaxeFoundation/hx3compat

2. Build Heaps IDE

  • Clone this repo
  • Run haxe hide.hxml
  • This will create hide.js in the bin folder
  • If there are errors when compiling, make sure you are using the latest libraries from git

3. Install NWJS

  • Download and copy NWJS into the /bin/nwjs directory
  • On OSX, copy all files from bin into the bin/nwjs.app/Contents/Resources/app.nw folder

Running

  • Windows: Run hide.cmd
  • Linux: Run nwjs/nwjs
  • OSX: Open the NWJS application

Configuration

In your project's resource folder, you can create a props.json configuration file to override Hide's default settings. Refer to bin/defaultProps.json for the list of available settings.

Extending Hide

Custom plugin

In your project, create an hxml configuration for building the plugin. Example:

# hide-plugin.hxml
-cp src
-lib hide
-lib hxnodejs
-lib castle
--macro hide.Plugin.init()
-js hide-plugin.js
-debug
HideImports

HideImports.hx here is just a file that lists all the classes you want to embed in your plugin. Example:

// HideImports.hx
import prefabs.MyPrefab1;
import prefabs.MyPrefab2;

Running haxe hide-plugin.hxml should now generate a hide-plugin.js plugin file.

In your project configuration file (res/props.json) you can now include this file like so:

{
    "plugins": ["../hide-plugin.js"]
}

Aside from javascript plugins, you can add your own stylsheets:

{
    "plugins": ["../hide-plugin-style.css"]
}

Custom prefab

Example of a project-specific custom prefab:

import hrt.prefab.Context;
import hrt.prefab.Library;

class MyPrefab extends hrt.prefab.Object3D {
    
    public function new(?parent) {
        super(parent);
        type = "myprefab";
    }

    override function make(ctx:Context):Context {
        var ret = super.make(ctx);
        // Custom code...
        return ret;
    }

    #if editor

    override function getHideProps() : hide.prefab.HideProps {
        return { icon : "cog", name : "MyPrefab" };
    }

    #end

    static var _ = Library.register("myprefab", MyPrefab);
}

Custom file views

You can add your own viewers/editors for files, by extending hide.view.FileView class:

import hide.view.FileView;

class CustomView extends FileView {
    
    // onDisplay should create html layout of your view. It is also called each when file is changed externally.
    override public function onDisplay()
    {
        // Example of initial layout setup.
        element.html('
          <div class="flex vertical">
            <div class="toolbar"></div>
            <div class="content"></div>
          </div>
        ');
        var tools = new hide.comp.Toolbar(null, element.find(".toolbar"));
        var content = element.find(".content"));
        // Importantly, use `getPath()` to obtain file path that you can use for filesystem access.
        var path = getPath();
        // ... your code to fill content
  }
  
  // Register the view with specific extensions.
  // Extensions starting with `json.` refer to `.json` files with `type` at root
  // object being second part of extension ("type": "customView" in this sample).
  // Otherwise it is treated as regular file extension.
  // Providing icon and createNew is optional. If createNew set, HIDE file tree will have a context menu item to create new file that FileView represents.
  static var _ = hide.view.FileTree.registerExtension(CustomView, ["json.customView", "customview"], { icon: "snowflake-o", createNew: "Dialog Context" });
  
}

hide's People

Contributors

trethaller avatar ncannasse avatar shirosmith avatar spiratom avatar yanrishatum avatar fl0xer avatar chuckatshiro avatar gama11 avatar calderarchinuk avatar nadako avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.