Skip to content

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

License

Notifications You must be signed in to change notification settings

Lime-blur/rwparser

Repository files navigation

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