/rwparser

Android library for parsing and converting RenderWare dff and txd models of Grand Theft Auto.

Primary LanguageC++Apache License 2.0Apache-2.0

rwparser

rwparser is an android library for parsing and converting RenderWare dff and txd models of Grand Theft Auto.

Gradle Dependency

Add this dependency to your module's build.gradle file:

dependencies {
  ..
  implementation 'com.github.Lime-blur:rwparser:latest_version'
}

Add it in your root build.gradle at the end of repositories (or in settings.gradle):

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
  }
}

Usage

Parsing

In order to parse a .dff file, you simply need to create a ModelParser() object and call the appropriate method:

val modelParser = ModelParser()
val parseResult = modelParser.putDffDumpIntoFile(inFilePath, outFilePath, /* optional */ true)

For asynchronous parsing, you need to call the appropriate function and bind ModelParser to the component's lifecycle:

class MainActivity : AppCompatActivity() {

    private var modelParser: ModelParser? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ..
        modelParser = ModelParser()
    }

    override fun onDestroy() {
        modelParser?.destroy()
        super.onDestroy()
    }

    private fun parse() {
        modelParser?.putDffDumpIntoFileAsync(inFilePath, outFilePath, /* optional */ true) { parseResult ->
            // Handling the callback
        }
    }
}

Same for .txd file:

val modelParser = ModelParser()
val parseResult = modelParser.putTxdDumpIntoFile(inFilePath, outFilePath)

For asynchronous .txd's parsing:

class MainActivity : AppCompatActivity() {

    private var modelParser: ModelParser? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ..
        modelParser = ModelParser()
    }

    override fun onDestroy() {
        modelParser?.destroy()
        super.onDestroy()
    }

    private fun parse() {
        modelParser?.putTxdDumpIntoFileAsync(inFilePath, outFilePath) { parseResult ->
            // Handling the callback
        }
    }
}

Converting

The library can also convert .dff to .gltf format. To convert you need:

val modelParser = ModelParser()
val parseResult = modelParser.convertDffToGltf(inDffFilePath, outFilePath, /* optional */ inTxdFilePath, /* optional */ viewType)

For asynchronous .dff's converting:

class MainActivity : AppCompatActivity() {

    private var modelParser: ModelParser? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ..
        modelParser = ModelParser()
    }

    override fun onDestroy() {
        modelParser?.destroy()
        super.onDestroy()
    }

    private fun convert() {
        modelParser?.convertDffToGltfAsync(dffFilePath, gltfFilePath, /* optional */ txdFilePath, /* optional */ viewType) { parseResult ->
            // Handling the callback
        }
    }
}

See the sample application, where an example of using the library is implemented: https://github.com/Lime-blur/rwparser/tree/main/sample

Rights