mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 23:24:41 +00:00
WIP of assimp integration.
This commit is contained in:
parent
32c7f2c7a7
commit
bf170ffbca
2135 changed files with 1260856 additions and 7 deletions
136
Engine/lib/assimp/contrib/openddlparser/README.md
Normal file
136
Engine/lib/assimp/contrib/openddlparser/README.md
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
The OpenDDL-Parser
|
||||
==================
|
||||
|
||||
The OpenDDL-Parser is a small and easy to use library for OpenDDL-file-format-parsing. OpenDDL is the shortcut for Open Data Description Language, a data-declaration language introduced by Eric Lengyel. Please check http://openddl.org/ if you want to learn more about it.
|
||||
|
||||
Build status
|
||||
============
|
||||
Linux build status: [](https://travis-ci.org/kimkulling/openddl-parser)
|
||||
Current coverity check status:
|
||||
<a href="https://scan.coverity.com/projects/5606">
|
||||
<img alt="Coverity Scan Build Status"
|
||||
src="https://scan.coverity.com/projects/5606/badge.svg"/>
|
||||
</a>
|
||||
Current test coverage:[](https://coveralls.io/github/kimkulling/openddl-parser?branch=cpp_coveralls)
|
||||
Get the source code
|
||||
===================
|
||||
You can get the code from our git repository, which is located at GitHub. You can clone the repository with the following command:
|
||||
|
||||
> git clone https://github.com/kimkulling/openddl-parser.git
|
||||
|
||||
Building the source from the GitHub-Repo
|
||||
========================================
|
||||
To build the library you need to install cmake first ( see http://www.cmake.org/ for more information ). Make also sure that a compiler tool-chain is installed on your machine.
|
||||
After installing it you can open a console and enter:
|
||||
|
||||
> cmake CMakeLists.txt
|
||||
|
||||
This command will generate a build environment for your preferred build tool ( for Visual-Studio-users the project files will be generated, for gcc-users the makefiles will be generated ).
|
||||
When using an IDE open the IDE and run the build. When using GNU-make type in your console:
|
||||
|
||||
> make
|
||||
|
||||
and that's all.
|
||||
|
||||
When using Visual Studio CMake will generate you a solution for ythe library. Just build it there.
|
||||
|
||||
Use the library
|
||||
===============
|
||||
To use the OpenDDL-parser you need to build the lib first. Now add the
|
||||
> <Repo-folder>/include
|
||||
|
||||
to your include-path and the
|
||||
|
||||
> <Repo-folder>/lib
|
||||
|
||||
to your lib-folder. Link the openddl.lib to your application.
|
||||
|
||||
Here is a small example how to use the lib:
|
||||
|
||||
```cpp
|
||||
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
#include <openddlparser/OpenDDLParser.h>
|
||||
|
||||
USE_ODDLPARSER_NS;
|
||||
|
||||
int main( int argc, char *argv[] ) {
|
||||
if( argc < 3 ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
char *filename( nullptr );
|
||||
if( 0 == strncmp( FileOption, argv[ 1 ], strlen( FileOption ) ) ) {
|
||||
filename = argv[ 2 ];
|
||||
}
|
||||
std::cout << "file to import: " << filename << std::endl;
|
||||
if( nullptr == filename ) {
|
||||
std::cerr << "Invalid filename." << std::endl;
|
||||
return Error;
|
||||
}
|
||||
|
||||
FILE *fileStream = fopen( filename, "r+" );
|
||||
if( NULL == filename ) {
|
||||
std::cerr << "Cannot open file " << filename << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// obtain file size:
|
||||
fseek( fileStream, 0, SEEK_END );
|
||||
const size_t size( ftell( fileStream ) );
|
||||
rewind( fileStream );
|
||||
if( size > 0 ) {
|
||||
char *buffer = new char[ size ];
|
||||
const size_t readSize( fread( buffer, sizeof( char ), size, fileStream ) );
|
||||
assert( readSize == size );
|
||||
OpenDDLParser theParser;
|
||||
theParser.setBuffer( buffer, size );
|
||||
const bool result( theParser.parse() );
|
||||
if( !result ) {
|
||||
std::cerr << "Error while parsing file " << filename << "." << std::endl;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
How to access the imported data
|
||||
===============================
|
||||
The data is organized as a tree. You can get the root-node of the tree with the following code:
|
||||
|
||||
```cpp
|
||||
OpenDDLParser theParser;
|
||||
theParser.setBuffer( buffer, size );
|
||||
const bool result( theParser.parse() );
|
||||
if ( result ) {
|
||||
DDLNode *root = theParser.getRoot();
|
||||
DDLNode::DllNodeList childs = root->getChildNodeList();
|
||||
for ( size_t i=0; i<childs.size(); i++ ) {
|
||||
DDLNode *child = childs[ i ];
|
||||
Property *prop = child->getProperty(); // to get properties
|
||||
std::string type = child->getType(); // to get the node type
|
||||
Value *values = child->getValue(); // to get the data;
|
||||
|
||||
// to loop through all values
|
||||
while ( values != ddl_nullptr ) {
|
||||
int current = values->getInt32();
|
||||
values = value->getNext();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
The node instance called root contains the data.
|
||||
|
||||
All data lists are organized as linked lists.
|
||||
|
||||
Reference documentation
|
||||
=======================
|
||||
Please check http://kimkulling.github.io/openddl-parser/doxygen_html/index.html.
|
||||
|
||||
Projects using OpenDDL-Parser
|
||||
=============================
|
||||
- Asset Importer Lib: https://github.com/assimp/assimp .
|
||||
Loading…
Add table
Add a link
Reference in a new issue