diff --git a/advancedfx_import_gameRecord.py b/advancedfx_import_gameRecord.py index 3c02167..0d947fb 100644 --- a/advancedfx_import_gameRecord.py +++ b/advancedfx_import_gameRecord.py @@ -1,7 +1,7 @@ # Copyright (c) advancedfx.org # # Last changes: -# 2017-08-02 dominik.matrixstorm.com +# 2017-09-14 dominik.matrixstorm.com # # First changes: # 2016-07-13 dominik.matrixstorm.com @@ -109,66 +109,10 @@ def Quaternion(x,y,z,w): quat.w = w return quat -class BufferedFile: - def __init__(self,filePath): - self.b = bytearray(1048576) - self.index = 0 - self.numread = 0 - self.file = open(filePath, 'rb') - self.filePos = 0 - if self.file: - self.file.seek(0, 2) - self.fileSize = self.file.tell() - self.file.seek(0, 0) - else: - self.fileSize = 0 - - def Read(self,readBytes): - result = bytearray() - - if self.file is None: - return result - - while 0 < readBytes: - bytesLeft = self.numread -self.index - bytesNow = min(bytesLeft, readBytes) - - if 0 >= bytesNow: - self.index = 0 - self.numread = self.file.readinto(self.b) - if not self.numread: - return result - continue - - result += self.b[self.index : (self.index +bytesNow)] - self.index += bytesNow - self.filePos += bytesNow - readBytes -= bytesNow - - return result - - def FileSize(self): - if not self.file: - return None - - return self.fileSize - - def Tell(self): - if not self.file: - return None - - return self.filePos; - - - def Close(self): - if self.file is not None: - self.file.close(); - self.file = None - def ReadString(file): buf = bytearray() while True: - b = file.Read(1) + b = file.read(1) if len(b) < 1: return None elif b == '\0': @@ -177,28 +121,28 @@ def ReadString(file): buf.append(b[0]) def ReadBool(file): - buf = file.Read(1) + buf = file.read(1) if(len(buf) < 1): return None - return struct.unpack('?', buf)[0] + return struct.unpack(' 60 else dagName - dagName = "afx." +str(modelHandle.objNr)+"."+str(modelHandle.handle)+ " " + dagName + dagName = "afx." +str(modelHandle.objNr)+ " " + dagName dagAnimSet = sfmUtils.CreateModelAnimationSet(dagName,modelName) @@ -438,21 +442,14 @@ def ReadFile(fileName): InitalizeAnimSet(dagAnimSet) modelHandle.modelData = dagAnimSet - - channelsClip = sfmUtils.GetChannelsClipForAnimSet(dagAnimSet, shot) - - time = time -channelsClip.timeFrame.start.GetValue() - visible = True #visible = ReadBool(file) + modelHandle.lastRenderOrigin = renderOrigin - MakeKeyFrameValue(channelCache, dagAnimSet, 'visible_channel', time, visible) + time = timeConverter.Convert(time, sfmUtils.GetChannelsClipForAnimSet(dagAnimSet, shot)) - renderOrigin = ReadVector(file) - renderAngles = ReadQAngle(file) + MakeKeyFrameValue(channelCache, dagAnimSet, 'visible_channel', time, visible) - if True == visible: - # Only key-frame if visible - MakeKeyFrameTransform(channelCache, dagAnimSet, "rootTransform", time, renderOrigin, QuaternionFromQAngle(renderAngles), True) + MakeKeyFrameTransform(channelCache, dagAnimSet, "rootTransform", time, renderOrigin, QuaternionFromQAngle(renderAngles), True) if dict.Peekaboo(file,'baseanimating'): #skin = ReadInt(file) @@ -481,9 +478,7 @@ def ReadFile(fileName): name = name[:name.find(')')] #print name - if True == visible: - # Only key-frame if visible - MakeKeyFrameTransform(channelCache, dagAnimSet, name, time, vec, quat) + MakeKeyFrameTransform(channelCache, dagAnimSet, name, time, vec, quat) dict.Peekaboo(file,'/') @@ -502,18 +497,13 @@ def ReadFile(fileName): shot.scene.GetChild(shot.scene.FindChild("Cameras")).AddChild(dmeAfxCam) time = ReadFloat(file) - if None == firstTime: - firstTime = time - time = vs.DmeTime_t(time -firstTime) renderOrigin = ReadVector(file) renderAngles = ReadQAngle(file) fov = ReadFloat(file) fov = fov / 180.0 - channelsClip = sfmUtils.GetChannelsClipForAnimSet(afxCam, shot) - - time = time -channelsClip.timeFrame.start.GetValue() + time = timeConverter.Convert(time, sfmUtils.GetChannelsClipForAnimSet(afxCam, shot)) MakeKeyFrameValue(channelCache, afxCam, 'fieldOfView', time, fov) MakeKeyFrameTransform(channelCache, afxCam, 'transform', time, renderOrigin, QuaternionFromQAngle(renderAngles), False, '_pos', '_rot') @@ -523,7 +513,7 @@ def ReadFile(fileName): return False finally: if file is not None: - file.Close() + file.close() return True diff --git a/readme.txt b/readme.txt index f8129bd..915b2c0 100644 --- a/readme.txt +++ b/readme.txt @@ -74,6 +74,11 @@ a custom (skin) model (modelName is '?' then). Changelog: +1.5.0 (2017-09-13T17:26Z): + - advancedfx_import_gameRecord: + - Updated to AGR version 3 + + 1.4.0 (2017-08-03T12:00Z): - advancedfx_import_gameRecord: - Updated to agr version 2 (also bug fixes)