As you may (or may not) know UnrealScript (in Unreal Engine 1.x) doesn't have file API - you just can't save/load custom files from within UnrealScript. It's quite huge disadvantage if you want to save some bits of information on players PC. That's why for Residual Decay I wrote new file API. It can save/load any file from within UT directory (yeah - you can't save anything outside it), also list of file extensions was restricted (you can't use any of UEngine extensions and executables) - this way no one will be able to execute malicious code on player PC (or just destroy UT installation). Other than that it's fully functional file API.
I was thinking on rewriting whole shader implementation in RD for a long time. New system consists of three objects:
- NMSceneShader - which contain all shader specific properties and pointer to UNMShaderProgram. It's more of a link between Unreal Script and renderer. Changing properties here will affect a shader.
- NMShaderObject - which contain shader program (as text buffer) - done because it's easier, faster and better to use native UEngine format to store shaders.
- UNMShaderProgram - which contain compiled program itself, pointer to NMSceneShader and NMShaderObject and all texture data. It's also and object that have to be extended in a renderer in order to have shader support. It's written only in C++.
I've been working on new, more powerfull, animation notify system for RD. New animation notify code is implemented per-class based rather then per-model as in standard one. The advantage is that now animator can define in which frame certain effect should be created (eg. sound) and programmer will simply add it to animation notify array in default properties.