Ember
Loading...
Searching...
No Matches
External References

Overview

Ember is built on several powerful libraries and frameworks. This page provides links to their documentation for deeper understanding.

wxWidgets

wxWidgets is the cross-platform GUI framework used by EmberForge.

Official Documentation

Resource Link
Main Documentation https://docs.wxwidgets.org/
API Reference https://docs.wxwidgets.org/stable/classes.html
Wiki https://wiki.wxwidgets.org/
Samples https://docs.wxwidgets.org/stable/page_samples.html

Key Classes Used in Ember

wxWidgets Class Ember Usage
wxApp Application entry point (App class)
wxFrame Main window (MainFrame class)
wxPanel Container for controls
wxAuiManager Dockable panel management
wxAuiNotebook Tabbed interface
wxTreeCtrl Tree view (hierarchy)
wxPropertyGrid Property editing
wxDialog Modal dialogs

wxWidgets Tutorials

libxml2

libxml2 is the XML parsing library used by EmberCore.

Official Documentation

Resource Link
Main Page http://xmlsoft.org/
API Reference http://xmlsoft.org/html/index.html
Tutorial http://xmlsoft.org/tutorial/index.html
Examples http://xmlsoft.org/examples/index.html

Key Functions Used

libxml2 Function Purpose
xmlReadFile() Parse XML file
xmlReadMemory() Parse XML from string
xmlDocGetRootElement() Get document root
xmlNodeGetContent() Get node text content
xmlGetProp() Get attribute value
xmlSaveFormatFile() Save formatted XML

libxml2 in Ember

The LibXMLBehaviorTreeParser class wraps libxml2 functionality:

// Ember's parser uses libxml2 internally
auto result = parser.ParseFile("tree.xml");
Thread-safe XML parser using libxml2 for behavior tree files.

spdlog (Optional)

spdlog is a fast C++ logging library used for enhanced logging.

Official Documentation

Resource Link
GitHub https://github.com/gabime/spdlog
Wiki https://github.com/gabime/spdlog/wiki

Usage in Ember

When spdlog is available, Ember uses it for file and console logging:

// Ember's logger automatically uses spdlog if available
LOG_INFO("Category", "Message");
LOG_WARNING("Category", "Warning message");
LOG_ERROR("Category", "Error message");
#define LOG_ERROR(category, message)
Definition Logger.h:116
#define LOG_WARNING(category, message)
Definition Logger.h:115
#define LOG_INFO(category, message)
Definition Logger.h:114

Google Test

Google Test is used for unit testing EmberCore.

Official Documentation

Resource Link
GitHub https://github.com/google/googletest
Primer https://google.github.io/googletest/primer.html
Advanced https://google.github.io/googletest/advanced.html

Running Ember Tests

cd build
ctest --output-on-failure
# Or directly
./bin/tests/embercore_tests

CMake

CMake is the build system used by Ember.

Official Documentation

Resource Link
Documentation https://cmake.org/documentation/
Tutorial https://cmake.org/cmake/help/latest/guide/tutorial/index.html
Commands https://cmake.org/cmake/help/latest/manual/cmake-commands.7.html

Doxygen

Doxygen generates this documentation.

Official Documentation

Resource Link
Manual https://www.doxygen.nl/manual/
Special Commands https://www.doxygen.nl/manual/commands.html
Markdown Support https://www.doxygen.nl/manual/markdown.html

Adding Documentation

Use Doxygen-style comments:

int myFunction(const std::string& name);

Behavior Tree Resources

BehaviorTree.CPP

Ember uses a compatible XML format with BehaviorTree.CPP:

Resource Link
GitHub https://github.com/BehaviorTree/BehaviorTree.CPP
Documentation https://www.behaviortree.dev/
XML Format https://www.behaviortree.dev/docs/learn-the-basics/xml_format

Behavior Tree Concepts

Resource Description
Introduction to BTs Basic concepts
Node Types Control, decorator, action nodes
Blackboards Data sharing

C++ References

Language References

Resource Link
cppreference https://en.cppreference.com/
C++14 Standard https://isocpp.org/wiki/faq/cpp14-language

Key C++14 Features Used

  • auto type deduction
  • Lambda expressions
  • std::make_unique
  • std::shared_ptr / std::unique_ptr
  • Range-based for loops
  • override / final specifiers

See Also