暫無描述

Clément Espeute 9456a8a615 Fix duplicate not properly calling queueRebuild 11 月之前
.github 60d28a8c28 Fix CI for lib hashlink 1 年之前
.vscode c714e48089 Prefab 2 (#238) 1 年之前
bin a73a2e30e4 Diplay more than a word on lm dropdown tabs when overflowing 11 月之前
hide 9456a8a615 Fix duplicate not properly calling queueRebuild 11 月之前
hrt 9456a8a615 Fix duplicate not properly calling queueRebuild 11 月之前
libs 12cb1b9cf9 Haxe: fix deprecated @:enum abstract 1 年之前
.gitignore 37ad318a9b minor fixes 1 年之前
LICENSE 984f185a4d Create LICENSE 1 年之前
README.md 7d2521fbd2 Update README.md 4 年之前
common.hxml 55b97c881a Memory profiler: remove duplicated memory, block and type files 1 年之前
haxelib.json b7ac104088 more prefab work: added resource, group, unknown, in-place reload 7 年之前
hide.hxml 876fd147eb Remove useless -D prefab2 compilation flag. 11 月之前
hide_rt.hxml 37ad318a9b minor fixes 1 年之前

README.md

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

  • Install Haxe using appropriate installer from https://haxe.org/download/
  • Install these libraries:

    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" });
  
}