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 SDK 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/nw . (don't miss the trailing space and dot)
  • 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

acavalier avatar arthurteisseire avatar calderarchinuk avatar chuckatshiro avatar clementlandrin avatar dopuras avatar elisee avatar espeuteclement avatar fl0xer avatar gama11 avatar jed974 avatar jefvel avatar klabz avatar nadako avatar ncannasse avatar onehundredfeet avatar shirosmith avatar speedphoenix avatar spiratom avatar trethaller avatar yanrishatum avatar

Watchers

 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.