Skip to content

osom8979/tbag

Repository files navigation

TBAG

Introduction

Tea-bag is Third party extension utility project.

Dep target

  • simdpp 2.1 (Boost Software License, Version 1.0)
  • stb master-e6afb9c (Public Domain or MIT license)
  • imgui 1.70 (MIT license)
  • imnodes master-68af72f (MIT license)
  • raylib 2.5-dev (zlib license)

External target

  • libressl 2.9.2 (Dual license; OpenSSL & SSLeay)
  • zlib 1.2.11 (zlib license)
  • libuv 1.38.1 (MIT license)
  • freetype 2.9.1 (FreeType License)
  • LuaJIT 2.0.5 (MIT license)
    • LuaDist/LuaJIT-CMakeLists.txt 2.0.3 (MIT license)
  • bzip2 1.0.5 (BSD-like license)
  • xz/liblzma 5.2.4 (Public domain)
  • libarchive 3.3.3 (New BSD license)
  • CMake 3.13.4 (BSD 3-Clause license)
    • external/archive/build/Modules/CMakePushCheckState.cmake
  • gperftools 2.7 (BSD 3-Clause license)
  • nng 1.3.2 (MIT license)
  • glfw 3.3 (zlib license)
  • sqlite 3.28.0 (Public Domain)
  • date master-27d1e1e (MIT license)
  • lmdb bbc15ab (The OpenLDAP Public License)
  • civetweb master-2100e66 (MIT license)
  • asmjit master-5d40561 (zlib license)
  • blend2d master-934d071 (zlib license)
  • OpenBLAS 0.3.7 (BSD 3-Clause license)
  • icu4c 57.1 (ICU license; http://source.icu-project.org/repos/icu/icu/trunk/LICENSE)
  • flatbuffers 1.10.0 (Apache License, Version 2.0)
  • gtest 1.7.0 (BSD 3-clause license)
  • http-parser 2.8.1 (MIT license)
  • minizip 1.1 (zlib license)
  • demangle (google-glog) 0.3.4 (BSD 3-clause license)
  • lemon 1.3.1 (Boost Software License, Version 1.0)
  • lfds 7.1.1 (Public domain)

Inline libraries

  • fmt 6.2.1 (MIT license)
  • jsoncpp 1.8.4 (MIT license)
  • tinyxml2 7.0.1 (zlib license)

Resources

  • NanumGothicCoding 2.5 (SIL Open Font License, Version 1.1)

Dependencies

## x11, xRandr
sudo apt-get install xorg-dev

## OpenGL
sudo apt-get install libglu1-mesa-dev

Optional:

## OpenCL
sudo apt-get install ocl-icd-opencl-dev

## UDev
sudo apt-get install libudev-dev

## xcb-image
sudo apt-get install libxcb-image0-dev

Programming rules.

  • Do not use exception expressions.

CMake build options.

The main build options you will want to configure are as follows:

  • USE_CCACHE: Enable ccache compile.
  • USE_GOLD: Enable ld.gold linker if gcc compiler.
  • USE_PCH: Enable PCH compile.
  • USE_OPENGL: Enable OpenGL library.
  • USE_OPENCL: Enable OpenCL library.
  • USE_CUDA: Enable CUDA compile.
  • USE_DOXYGEN: Enable doxygen documentation.
  • USE_RTTI: Enable RTTI flag.
  • DISABLE_TDLOG: Disable tbag default logger.
  • DISABLE_LUAJIT_EXE_FLAGS: Disable LuaJIT Embedding flags if apple.
  • DISABLE_DEFAULT_TPOT_LUAJIT: Do not use the default TpoT mode as LuaJIT.
  • DISABLE_TESTER: Do not build the tester target.
  • INSTALL_WITH_FAKE_LUAJIT: Install fake LuaJIT.

Tpot

Environment variables.

  • EMPTY.

Game Engine

Simple example

luajit + raylib + imgui example:

-- Core - Basic window

width = 800
height = 450

tbag.SetConfigFlags(tbag.FLAG_WINDOW_RESIZABLE);
tbag.InitWindow(width, height, 'Basic window')
tbag.GuiInitRay()
tbag.GuiNodesInitialize()
tbag.SetTargetFPS(60)

gradient = tbag.GenImageGradientV(400, 400, tbag.RED, tbag.BLUE);
texture = tbag.LoadTextureFromImage(gradient);
tbag.UnloadImage(gradient);
gradient = nil

while not tbag.WindowShouldClose() do
    tbag.GuiUpdateRay()
    if tbag.GuiBegin('Window') then
        tbag.GuiText('Label')
    end
    tbag.GuiEnd()

    tbag.GuiShowDemoWindow()
    tbag.GuiNodesShowDemoWindow()

    tbag.BeginDrawing()
    tbag.ClearBackground({30, 30, 30})
    tbag.DrawTexture(texture, 0, 0, tbag.WHITE);
    tbag.DrawCircleV({width/2, height/2}, 50, tbag.RED);
    text = tbag.format('Current FPS: {}', tbag.GetFPS())
    tbag.DrawText(text, 10, 20, 20, {200, 200, 200});
    tbag.EndDrawing()
end

tbag.UnloadTexture(texture);
texture = nil

tbag.GuiNodesShutdown()
tbag.GuiShutdownRay()
tbag.CloseWindow()

License

See the LICENSE file for details. In summary, tbag is licensed under the MIT license.

ASCII Logo

+--------------------------+
|    __  __                |
|   / /_/ /_  ____ _____ _ |
|  / __/ __ \/ __ `/ __ `/ |
| / /_/ /_/ / /_/ / /_/ /  |
| \__/_.___/\__,_/\__, /   |
|                /____/    |
| Third party libs package |
+--------------------------+