11# Copyright (c) advancedfx.org
22#
33# Last changes:
4- # 2016-07-14 by dominik.matrixstorm.com
4+ # 2016-07-15 by dominik.matrixstorm.com
55#
66# First changes:
77# 2016-07-13 by dominik.matrixstorm.com
@@ -244,6 +244,7 @@ def ReadFile(fileName):
244244
245245 dict = AgrDictionary ()
246246 channelCache = ChannelCache ()
247+ knownHandleToDagName = {}
247248
248249 stupidCount = 0
249250
@@ -252,6 +253,20 @@ def ReadFile(fileName):
252253
253254 if node0 is None :
254255 break
256+
257+ elif 'deleted' == node0 :
258+ handle = ReadInt (file )
259+ time = ReadDouble (file )
260+
261+ dagName = knownHandleToDagName .get (handle , None )
262+ if dagName is not None :
263+ # Make removed ent invisible:
264+ sfm .UsingAnimationSet (dagName )
265+ dagAnimSet = sfm .GetCurrentAnimationSet ()
266+ channelsClip = sfmUtils .GetChannelsClipForAnimSet (dagAnimSet , shot )
267+ time = time - firstTime
268+ time = vs .DmeTime_t (time ) - channelsClip .timeFrame .start .GetValue ()
269+ MakeKeyFrameValue (channelCache , dagAnimSet , 'visible_channel' , time , False )
255270
256271 elif 'entity_state' == node0 :
257272 stupidCount = stupidCount + 1
@@ -273,12 +288,23 @@ def ReadFile(fileName):
273288 time = ReadDouble (file ) if dict .Peekaboo (file , 'time' ) else None
274289 if None == firstTime :
275290 firstTime = time
276- time = time - firstTime
291+ time = vs . DmeTime_t ( time - firstTime )
277292
278293 modelName = dict .Read (file ) if dict .Peekaboo (file , 'modelName' ) else None
279294
295+ dagName = knownHandleToDagName .get (handle , None )
296+ if dagName is not None :
297+ # Switched model, make old model invisible:
298+ sfm .UsingAnimationSet (dagName )
299+ dagAnimSet = sfm .GetCurrentAnimationSet ()
300+ channelsClip = sfmUtils .GetChannelsClipForAnimSet (dagAnimSet , shot )
301+ rtime = time - channelsClip .timeFrame .start .GetValue ()
302+ MakeKeyFrameValue (channelCache , dagAnimSet , 'visible_channel' , rtime , False )
303+
280304 dagName = "afx/" + modelName + "/" + str (handle )
281305
306+ knownHandleToDagName [handle ] = dagName
307+
282308 sfm .ClearSelection ()
283309 sfm .Select (dagName + ':rootTransform' )
284310 dagRootTransform = sfm .FirstSelectedDag ()
@@ -298,7 +324,7 @@ def ReadFile(fileName):
298324
299325 channelsClip = sfmUtils .GetChannelsClipForAnimSet (dagAnimSet , shot )
300326
301- time = vs . DmeTime_t ( time ) - channelsClip .timeFrame .start .GetValue ()
327+ time = time - channelsClip .timeFrame .start .GetValue ()
302328
303329 visible = ReadBool (file ) if dict .Peekaboo (file , 'visible' ) else None
304330
0 commit comments