Git Product home page Git Product logo

welderfoundation / welderenginerevamp Goto Github PK

View Code? Open in Web Editor NEW
48.0 7.0 12.0 204.7 MB

Major overhaul of the Zero Engine and renaming to Welder.

License: Other

CMake 0.72% C++ 96.98% C 1.78% HTML 0.12% Inno Setup 0.09% JavaScript 0.17% Dockerfile 0.02% Shell 0.01% Batchfile 0.01% C# 0.12%
2d 3d cross-platform digipen engine framework game game-development game-engine game-framework

welderenginerevamp's Introduction

Welder Engine

The Welder Engine is a cross platform game engine that can be used to make simulations of any kind. Projects range from simple prototypes to professional 2D and 3D games, simple physics or graphics demonstrations to robust, realistic simulations.

Editor

Features

Editor

  • A discrete launcher that provides access to all project and engine builds
  • Editor modes customized for 2D and 3D projects
  • Full-featured text editor with dozens of hotkeys and configuration options

Architecture

Component-based architecture applied across the engine in the form of :

  • ZilchComponents for game object behaviors
  • ZilchFragment for fragment, vertex, and geometry shaders
  • ContentComponents for Resources meta data

Graphics

  • Fully modifiable, scripted rendering pipeline
  • With a physically-based renderer provided as the default renderer
  • Dedicated render thread

Physics

  • Custom-built, three-dimensional, constraint-based physics engine
  • Regions that can apply both pre-defined and user-defined PhysicsEffects
  • Robust, customizable joint system

Audio

  • Scripted, node-based DST system
  • 3D sound positioning and attenuation

Zilch

  • High-level scripting and shader language

Building

Building on Windows:

  • Install CMake and Node.js
  • Run the following in cmd:
git clone https://github.com/WelderFoundation/WelderEngineRevamp.git
cd WelderEngineRevamp
git submodule update --init --recursive
npm install

# Specify builder if not using the default. Ex: --builder="Visual Studio 17 2022"
node index.js cmake

.\Build\<target>\Welder.sln

welderenginerevamp's People

Contributors

aellinger avatar andrewcolean avatar arenddanielek avatar danecurbow avatar douglaszwick avatar jayrulez avatar jodavis42 avatar johannesmp avatar joshuaclaeys avatar nathan-carlson avatar playmer avatar trevorsundberg avatar yellowrobe avatar zeroengineteam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

welderenginerevamp's Issues

Ctrl+V crashes the editor

Windows build 0.0.25.2058

  1. Copy some text
  2. Open a script in the editor
  3. Paste

The editor crashes. Seems to work with copying/pasting game objects too. Perhaps related: if you select an object and run the "Copy" editor command, you get an error saying that "There is no 'ClipboardEvent' available to run the command 'Copy'", and you get the same corresponding message if you try to use the "Paste" command.

Ctrl+C does not copy objects selected in Objects view

    if (shell->IsKeyDown(Keys::Control) && (key == Keys::C || key == Keys::X) && shell->mOnCopy)
    {
      ClipboardData data;
      shell->mOnCopy(data, key == Keys::X, shell);
      ErrorIf(!data.mHasText && !data.mText.Empty(), "Clipboard Text was not empty, but HasText was not set");
      if (data.mHasText)
        WindowsSetClipboardText(data.mText.c_str());
      ErrorIf(data.mHasImage, "Copying image data not yet supported");
    }

The code above in Shell.cpp, specifically shell->mOnCopy(data, key == Keys::X, shell); will call into OsShell::ShellOnCopy.
This will eventually reach RootWidget::OnCutCopyPaste(ClipboardEvent* event).

void RootWidget::OnCutCopyPaste(ClipboardEvent* event)
{
  if (Widget* focusObject = mFocus)
    focusObject->DispatchBubble(event->EventId, event);
}

It will try to dispatch the clipboard event on the focused object. This is where the problem lies. The focused object in most cases will be the text element selected in the Objects view (if you didn't move the mouse over another element that steals the focus).
This element does not have the editor view port (which should handle the copy event) in its hierarchy, so the selected object(s) does not get copied as expected.

Shader/Graphics Features

Compute shaders.
All of the rest of the shader and graphics features that we all want.
Please.

Editor Copy command does not work

Select objects in the editor viewport, hit Space button, then select "Copy" from the list.
You will get a error notification: There is no 'ClipboardEvent' available to run the command 'Copy'.

The clipboard changes broke the copy command in the editor.
These methods in EditorCommands:

void SaveSelectionToClipboard(Editor* editor, Space* space);
void LoadObjectFromClipboard(Editor* editor, Space* space);

Were changed to

void SaveSelectionToClipboard(ClipboardEvent* event, Space* space);
void LoadObjectFromClipboard(ClipboardEvent* event, Space* space);

The problem with this is in EditorCommands.hpp:Commands2::Execute:

  void Execute(Command* command, CommandManager* manager) override
  {
    pt0* param0 = manager->GetContext()->Get<pt0>();
    pt1* param1 = manager->GetContext()->Get<pt1>();

    if (param0 == NULL)
      return CommandFailed(command, ZilchTypeId(pt0));

    if (param1 == NULL)
      return CommandFailed(command, ZilchTypeId(pt1));

    mFunction(param0, param1);
  }

This line

pt0* param0 = manager->GetContext()->Get<pt0>();

will return NULL since pt0 will be ClipboardEvent.
It's responsible for the second part of this issue #11.

Launcher cannot open builds

Windows launcher build 0.0.25.2058

  1. Open the launcher via its exe
  2. Try to open a project. It fails because it cannot find the UiWidget library
  3. Open an editor build via its exe. The editor opens properly
  4. Run the "OpenProject" command. It opens another instance of the launcher. In this new instance of the launcher, you are able to open builds

void Os::MarkAsModified(bool modified);

The platform needs to expose a MarkAsModified function to the operating system. For most OSes this would do nothing, but for Emscripten this would set a flag that shows the "unsaved changes" dialog when you click exit on the tab.

Currently the launcher shows the dialog for no reason, and the editor shows it when no changes have been made.

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.