Shuvit game master repo. http://shuvit.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Record.py 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610
  1. #record
  2. from bge import logic
  3. from mathutils import Vector
  4. from SortData import *
  5. cont = logic.getCurrentController()
  6. own = cont.owner
  7. scene = logic.getCurrentScene()
  8. cube = scene.objects["control_cube.002"]
  9. #obj = scene.objects["control_cube.002"]
  10. #sound_empty = scene.objects['replay_sound_empty']
  11. path = logic.expandPath(own["filePath"])
  12. PAF = 0
  13. DAF = 0
  14. deck = scene.objects["deck"]
  15. trucks = scene.objects["trucks"]
  16. throw_deck_empty = scene.objects["throw_deck_empty"]
  17. wheel1 = scene.objects["rollen.000"]
  18. wheel2 = scene.objects["rollen.001"]
  19. wheel3 = scene.objects["rollen.002"]
  20. wheel4 = scene.objects["rollen.003"]
  21. deckact = deck.actuators["Visibility"]
  22. trucksact = trucks.actuators["Visibility"]
  23. wheel1act = wheel1.actuators["Visibility"]
  24. wheel2act = wheel2.actuators["Visibility"]
  25. wheel3act = wheel3.actuators["Visibility"]
  26. wheel4act = wheel4.actuators["Visibility"]
  27. class getData:
  28. def savePosition(obj, cut):
  29. position = [Vector(obj.worldPosition)[0],
  30. Vector(obj.worldPosition)[1],
  31. Vector(obj.worldPosition)[2]]
  32. position = str(position).strip("[]")
  33. position = position.replace(", ",",")
  34. writeData.addPosition(obj, position, cut)
  35. def saveOrientation(obj, cut):
  36. orientation = [Vector(obj.localOrientation.to_euler())[0],
  37. Vector(obj.localOrientation.to_euler())[1],
  38. Vector(obj.localOrientation.to_euler())[2]]
  39. orientation = str(orientation).strip("[]")
  40. orientation = orientation.replace(", ",",")
  41. writeData.addOrientation(obj, orientation, cut)
  42. def saveScale(obj, cut):
  43. scale = [Vector(obj.localScale)[0],
  44. Vector(obj.localScale)[1],
  45. Vector(obj.localScale)[2]]
  46. scale = str(scale).strip("[]")
  47. scale = scale.replace(", ",",")
  48. writeData.addScale(obj, scale, cut)
  49. def saveColor(obj, cut):
  50. color = [Vector(obj.color)[0],
  51. Vector(obj.color)[1],
  52. Vector(obj.color)[2],
  53. Vector(obj.color)[3]]
  54. color = str(color).strip("[]")
  55. color = color.replace(", ",",")
  56. writeData.addColor(obj, color, cut)
  57. def saveState(obj, cut):
  58. state = str(obj.state)
  59. writeData.addState(obj, state, cut)
  60. def saveVisibility(obj, cut):
  61. visible = obj.visible
  62. if visible:
  63. visible = 1
  64. else:
  65. visible = 0
  66. writeData.addVisibility(obj, str(visible), cut)
  67. def saveSkaterAnim(obj, cut):
  68. import bge
  69. scene = bge.logic.getCurrentScene()
  70. skater = scene.objects["Char4"]
  71. deck = scene.objects["deck"]
  72. trucks = scene.objects["trucks"]
  73. playing_layer = 0
  74. for x in range(3020):
  75. l1 = skater.isPlayingAction(x)
  76. if l1 == True:
  77. playing_layer = x
  78. #print(x)
  79. playing_action = skater.getActionName(playing_layer)
  80. playing_action_frame = skater.getActionFrame(playing_layer)
  81. PAF = playing_action_frame
  82. own['PAF'] = PAF
  83. #print(playing_action, playing_action_frame)
  84. writeData.addSkaterAnim(obj, str(playing_action), cut)
  85. def saveSkaterAnimF(obj, cut):
  86. PAF = own['PAF']
  87. writeData.addSkaterAnimF(obj, str(PAF), cut)
  88. def saveDeckAnim(obj, cut):
  89. import bge
  90. scene = bge.logic.getCurrentScene()
  91. skater = scene.objects["Char4"]
  92. deck = scene.objects["deck"]
  93. trucks = scene.objects["trucks"]
  94. wheel1 = scene.objects["rollen.000"]
  95. wheel2 = scene.objects["rollen.001"]
  96. wheel3 = scene.objects["rollen.002"]
  97. wheel4 = scene.objects["rollen.003"]
  98. playing_layer = 0
  99. for x in range(3020):
  100. l1 = deck.isPlayingAction(x)
  101. if l1 == True:
  102. playing_layer = x
  103. #print(x)
  104. playing_action = deck.getActionName(playing_layer)
  105. playing_action_frame = deck.getActionFrame(playing_layer)
  106. DAF = playing_action_frame
  107. own['DAF'] = DAF
  108. #print(playing_action, playing_action_frame)
  109. writeData.addDeckAnim(obj, str(playing_action), cut)
  110. def saveDeckAnimF(obj, cut):
  111. DAF = own['DAF']
  112. writeData.addDeckAnimF(obj, str(DAF), cut)
  113. def saveSrollVol(obj, cut):
  114. num = cube['sroll_vol']
  115. writeData.addSrollVol(obj, str(num), cut)
  116. def saveSrollPitch(obj, cut):
  117. num = cube['sroll_pitch']
  118. writeData.addSrollPitch(obj, str(num), cut)
  119. def saveSgrind_cementVol(obj, cut):
  120. num = cube['grindcement_vol']
  121. writeData.addSgrind_cementVol(obj, str(num), cut)
  122. def saveSgrind_cementPitch(obj, cut):
  123. num = cube['grindcement_pitch']
  124. writeData.addSgrind_cementPitch(obj, str(num), cut)
  125. def saveSgrind_railVol(obj, cut):
  126. num = cube['grindrail_vol']
  127. writeData.addSgrind_railVol(obj, str(num), cut)
  128. def saveSgrind_railPitch(obj, cut):
  129. num = cube['grindrail_pitch']
  130. writeData.addSgrind_railPitch(obj, str(num), cut)
  131. def saveSpopsound(obj, cut):
  132. num = cube['pop_sound']
  133. writeData.addSpopsound(obj, str(num), cut)
  134. def saveSlandsound(obj, cut):
  135. num = cube['land_sound']
  136. writeData.addSlandsound(obj, str(num), cut)
  137. def saveSdeckvis(obj, cut):
  138. num = cube['deckvis']
  139. writeData.addSdeckvis(obj, str(num), cut)
  140. def loadData():
  141. #Function for loading the data from
  142. #the disk and setting it.
  143. objIndex = own["objIndex"]
  144. own["valueIndex"] = objIndex + 1
  145. valueIndex = own["valueIndex"]
  146. playbackSpeed = own["playbackSpeed"]
  147. loadedPosition = own["loadedPosition"]
  148. loadedOrientation = own["loadedOrientation"]
  149. loadedScale = own["loadedScale"]
  150. loadedColor = own["loadedColor"]
  151. loadedVisibility = own["loadedVisibility"]
  152. loadedSkaterAnim = own["loadedSkaterAnim"]
  153. loadedSkaterAnimf = own["loadedSkaterAnimF"]
  154. loadedDeckAnim = own["loadedDeckAnim"]
  155. loadedDeckAnimf = own["loadedDeckAnimF"]
  156. loadedSrollVol = own["loadedSrollVol"]
  157. loadedSrollPitch = own["loadedSrollPitch"]
  158. loadedSgrind_cementlVol = own["loadedSgrind_cementVol"]
  159. loadedSgrind_cementPitch = own["loadedSgrind_cementPitch"]
  160. loadedSgrind_railVol = own["loadedSgrind_railVol"]
  161. loadedSgrind_railPitch = own["loadedSgrind_railPitch"]
  162. loadedSpopsound = own["loadedSpopsound"]
  163. loadedSlandsound = own["loadedSlandsound"]
  164. loadedSdeckvis = own["loadedSdeckvis"]
  165. skater = scene.objects["Char4"]
  166. deck = scene.objects["deck"]
  167. trucks = scene.objects["trucks"]
  168. num = 1
  169. obj = scene.objects['control_cube.002']
  170. if num == 1:
  171. #for obj in scene.objects:
  172. if not "recorder" in obj:
  173. obj.state = 100
  174. obj.suspendDynamics()
  175. readData.loadAll() #Load the file!!!
  176. #-----Position-----#
  177. own["lengthPos"] = readData.getLengthPos()
  178. lengthPos = own["lengthPos"]
  179. if lengthPos:
  180. if objIndex > lengthPos-1:
  181. own["objIndex"] = 0
  182. if objIndex < 0:
  183. own["objIndex"] = lengthPos-2
  184. name, position = readData.returnPosition(objIndex, valueIndex)
  185. if name in scene.objects:
  186. try:
  187. scene.objects[name].worldPosition = position
  188. scene.objects['replay_sound_empty'].worldPosition = position
  189. #print("replay_sound_empty changing position")
  190. except:
  191. pass
  192. #-----Orientation-----#
  193. own["lengthOri"] = readData.getLengthOri()
  194. lengthOri = own["lengthOri"]
  195. if lengthPos:
  196. if valueIndex > lengthOri-1:
  197. own["valueIndex"] = 0
  198. if objIndex < 0:
  199. own["objIndex"] = lengthOri-2
  200. name, orientation = readData.returnOrientation(objIndex, valueIndex)
  201. if name in scene.objects:
  202. oXYZ = scene.objects[name].localOrientation.to_euler()
  203. oXYZ[0] = float(orientation[0])
  204. oXYZ[1] = float(orientation[1])
  205. oXYZ[2] = float(orientation[2])
  206. try:
  207. scene.objects[name].localOrientation = oXYZ.to_matrix()
  208. except:
  209. pass
  210. #-----Scale-----#
  211. own["lengthSca"] = readData.getLengthSca()
  212. lengthSca = own["lengthSca"]
  213. if lengthSca:
  214. if valueIndex > lengthSca-1:
  215. own["valueIndex"] = 0
  216. if objIndex < 0:
  217. own["objIndex"] = lengthSca-2
  218. name, scale = readData.returnScale(objIndex, valueIndex)
  219. if name in scene.objects:
  220. try:
  221. scene.objects[name].localScale = scale
  222. except:
  223. pass
  224. #-----Color-----#
  225. own["lengthCol"] = readData.getLengthCol()
  226. lengthCol = own["lengthCol"]
  227. if lengthCol:
  228. if valueIndex > lengthCol-1:
  229. own["valueIndex"] = 0
  230. if objIndex < 0:
  231. own["objIndex"] = lengthCol-2
  232. name, color = readData.returnColor(objIndex, valueIndex)
  233. if name in scene.objects:
  234. try:
  235. scene.objects[name].color = color
  236. except:
  237. pass
  238. #-----Visibility-----#
  239. own["lengthVis"] = readData.getLengthVis()
  240. lengthVis = own["lengthVis"]
  241. if lengthVis:
  242. if valueIndex > lengthVis-1:
  243. own["valueIndex"] = 0
  244. if objIndex < 0:
  245. own["objIndex"] = lengthVis-2
  246. name, visible = readData.returnVisibility(objIndex, valueIndex)
  247. if name in scene.objects:
  248. try:
  249. scene.objects[name].visible = int(visible)
  250. except:
  251. pass
  252. #-----Skater Animation Name-----#
  253. own["lengthSkaterAnim"] = readData.getLengthSkaterAnim()
  254. lengthSkaterAnim = own["lengthSkaterAnim"]
  255. #print("lengthskateranim", lengthSkaterAnim)
  256. if lengthSkaterAnim:
  257. if valueIndex > lengthSkaterAnim-1:
  258. own["valueIndex"] = 0
  259. if objIndex < 0:
  260. own["objIndex"] = lengthSkaterAnim-2
  261. name, skateranim = readData.returnSkaterAnim(objIndex, valueIndex)
  262. name, PAF = readData.returnSkaterAnimF(objIndex, valueIndex)
  263. #print(PAF)
  264. PAF = float(PAF)
  265. if name in scene.objects:
  266. #print("name in")
  267. try:
  268. skater.stopAction(0)
  269. skater.stopAction(1)
  270. skater.stopAction(2)
  271. skater.stopAction(3)
  272. skater.stopAction(9999)
  273. if skater != '':
  274. skater.playAction(skateranim, PAF,PAF, layer=9999, play_mode=1, speed=1)
  275. #print("Playing: ", skateranim, PAF)
  276. except:
  277. print("something is wrong")
  278. #pass
  279. #-----Deck Animation Name-----#
  280. own["lengthDeckAnim"] = readData.getLengthDeckAnim()
  281. lengthDeckAnim = own["lengthDeckAnim"]
  282. #print("lengthDeckanim", lengthDeckAnim)
  283. if lengthDeckAnim:
  284. if valueIndex > lengthDeckAnim-1:
  285. own["valueIndex"] = 0
  286. if objIndex < 0:
  287. own["objIndex"] = lengthDeckAnim-2
  288. name, deckanim = readData.returnDeckAnim(objIndex, valueIndex)
  289. name, DAF = readData.returnDeckAnimF(objIndex, valueIndex)
  290. #print(DAF)
  291. DAF = float(DAF)
  292. if name in scene.objects:
  293. #print("name in")
  294. try:
  295. deck.stopAction(0)
  296. deck.stopAction(1)
  297. deck.stopAction(2)
  298. deck.stopAction(3)
  299. deck.stopAction(9999)
  300. #print(deckanim)
  301. if deckanim != '':
  302. deck.playAction(deckanim, DAF,DAF, layer=9999, play_mode=1, speed=1)
  303. trucks.playAction(deckanim, DAF,DAF, layer=9999, play_mode=1, speed=1)
  304. #print("Playing: ", deckanim, PAF)
  305. except:
  306. print("deck something is wrong")
  307. #pass
  308. #
  309. #-----sroll-----#
  310. own["lengthSrollVol"] = readData.getLengthSrollVol()
  311. lengthSrollVol = own["lengthSrollVol"]
  312. if lengthSrollVol:
  313. if valueIndex > lengthSrollVol-1:
  314. own["valueIndex"] = 0
  315. if objIndex < 0:
  316. own["objIndex"] = lengthSrollVol-2
  317. name, srollVol = readData.returnSrollVol(objIndex, valueIndex)
  318. name, srollPitch = readData.returnSrollPitch(objIndex, valueIndex)
  319. if name in scene.objects:
  320. try:
  321. cube = scene.objects["control_cube.002"]
  322. srollVol = round(srollVol, 2)
  323. act = cube.actuators["sroll"]
  324. if srollVol < .12:
  325. act.volume = srollVol
  326. act.pitch = srollPitch
  327. act.startSound()
  328. except:
  329. pass
  330. ###
  331. #
  332. #-----grind cement-----#
  333. own["lengthSgrind_cementVol"] = readData.getLengthSgrind_cementVol()
  334. lengthSgrind_cementVol = own["lengthSgrind_cementVol"]
  335. if lengthSgrind_cementVol:
  336. if valueIndex > lengthSgrind_cementVol-1:
  337. own["valueIndex"] = 0
  338. if objIndex < 0:
  339. own["objIndex"] = lengthSgrind_cementVol-2
  340. name, sgrind_cementVol = readData.returnSgrind_cementVol(objIndex, valueIndex)
  341. name, sgrind_cementPitch = readData.returnSgrind_cementPitch(objIndex, valueIndex)
  342. if name in scene.objects:
  343. try:
  344. cube = scene.objects["control_cube.002"]
  345. sgrind_cementVol = round(sgrind_cementVol, 2)
  346. act = cube.actuators["grind_cement"]
  347. if sgrind_cementVol < .2:
  348. act.volume = sgrind_cementVol
  349. act.pitch = sgrind_cementPitch
  350. act.startSound()
  351. except:
  352. pass
  353. ###
  354. #
  355. #-----grind rail-----#
  356. own["lengthSgrind_railVol"] = readData.getLengthSgrind_railVol()
  357. lengthSgrind_railVol = own["lengthSgrind_railVol"]
  358. if lengthSgrind_railVol:
  359. if valueIndex > lengthSgrind_railVol-1:
  360. own["valueIndex"] = 0
  361. if objIndex < 0:
  362. own["objIndex"] = lengthSgrind_railVol-2
  363. name, sgrind_railVol = readData.returnSgrind_railVol(objIndex, valueIndex)
  364. name, sgrind_railPitch = readData.returnSgrind_railPitch(objIndex, valueIndex)
  365. if name in scene.objects:
  366. try:
  367. cube = scene.objects["control_cube.002"]
  368. sgrind_railVol = round(sgrind_railVol, 2)
  369. act = cube.actuators["grind_rail"]
  370. if sgrind_railVol < .2:
  371. act.volume = sgrind_railVol
  372. act.pitch = sgrind_railPitch
  373. act.startSound()
  374. #print("grindsound = ", sgrind_railVol, sgrind_railPitch)
  375. except:
  376. pass
  377. ###
  378. #
  379. #-----pop sound-----#
  380. own["lengthSpopsound"] = readData.getLengthSpopsound()
  381. lengthSpopsound = own["lengthSpopsound"]
  382. if lengthSpopsound:
  383. if valueIndex > lengthSpopsound-1:
  384. own["valueIndex"] = 0
  385. if objIndex < 0:
  386. own["objIndex"] = lengthSpopsound-2
  387. name, spopsound = readData.returnSpopsound(objIndex, valueIndex)
  388. if name in scene.objects:
  389. try:
  390. #cube = scene.objects[sound_empty]
  391. spopsound = round(spopsound, 2)
  392. act = cube.actuators["pop"]
  393. if spopsound == 1:
  394. act.startSound()
  395. #print("grindsound = ", spopsound, sgrind_railPitch)
  396. except:
  397. print("sound passed")
  398. pass
  399. ###
  400. #
  401. #-----land sound-----#
  402. own["lengthSlandsound"] = readData.getLengthSlandsound()
  403. lengthSlandsound = own["lengthSlandsound"]
  404. if lengthSlandsound:
  405. if valueIndex > lengthSlandsound-1:
  406. own["valueIndex"] = 0
  407. if objIndex < 0:
  408. own["objIndex"] = lengthSlandsound-2
  409. name, slandsound = readData.returnSlandsound(objIndex, valueIndex)
  410. if name in scene.objects:
  411. try:
  412. cube = scene.objects["control_cube.002"]
  413. slandsound = round(slandsound, 2)
  414. act = cube.actuators["land"]
  415. if slandsound == 1:
  416. act.startSound()
  417. #print("grindsound = ", slandsound, sgrind_railPitch)
  418. except:
  419. pass
  420. ###
  421. ###
  422. #
  423. #-----land sound-----#
  424. own["lengthSdeckvis"] = readData.getLengthSdeckvis()
  425. lengthSdeckvis = own["lengthSdeckvis"]
  426. if lengthSdeckvis:
  427. if valueIndex > lengthSdeckvis-1:
  428. own["valueIndex"] = 0
  429. if objIndex < 0:
  430. own["objIndex"] = lengthSdeckvis-2
  431. name, sdeckvis = readData.returnSdeckvis(objIndex, valueIndex)
  432. if name in scene.objects:
  433. try:
  434. cube = scene.objects["control_cube.002"]
  435. #slandsound = round(slandsound, 2)
  436. if sdeckvis == 1:
  437. print('setting deck visible')
  438. #wheel1.visible = True
  439. #wheel2.visible = True
  440. #wheel3.visible = True
  441. #wheel4.visible = True
  442. #deck.visible = True
  443. #trucks.setVisible(True, True)
  444. deckact.visibility = True
  445. trucksact.visibility = True
  446. wheel1act.visibility = True
  447. wheel2act.visibility = True
  448. wheel3act.visibility = True
  449. wheel4act.visibility = True
  450. cont.activate(deck.actuators['Visibility'])
  451. cont.activate(trucks.actuators['Visibility'])
  452. cont.activate(wheel1.actuators['Visibility'])
  453. cont.activate(wheel2.actuators['Visibility'])
  454. cont.activate(wheel3.actuators['Visibility'])
  455. cont.activate(wheel4.actuators['Visibility'])
  456. else:
  457. print('setting deck invisible')
  458. #wheel1.visible = False
  459. #wheel2.visible = False
  460. #wheel3.visible = False
  461. #wheel4.visible = False
  462. #deck.visible = False
  463. #trucks.setVisible(False, False)
  464. deckact.visibility = False
  465. trucksact.visibility = False
  466. wheel1act.visibility = False
  467. wheel2act.visibility = False
  468. wheel3act.visibility = False
  469. wheel4act.visibility = False
  470. cont.activate(deck.actuators['Visibility'])
  471. cont.activate(trucks.actuators['Visibility'])
  472. cont.activate(wheel1.actuators['Visibility'])
  473. cont.activate(wheel2.actuators['Visibility'])
  474. cont.activate(wheel3.actuators['Visibility'])
  475. cont.activate(wheel4.actuators['Visibility'])
  476. except:
  477. pass
  478. ##
  479. def main(recording_cutoff, cc):
  480. num = 1
  481. obj = scene.objects["control_cube.002"]
  482. if num == 1:
  483. #for obj in scene.objects:
  484. if "record_position" in obj:
  485. getData.savePosition(obj, recording_cutoff)
  486. if "record_orientation" in obj:
  487. getData.saveOrientation(obj, recording_cutoff)
  488. if "record_scale" in obj:
  489. getData.saveScale(obj, recording_cutoff)
  490. if "record_color" in obj:
  491. getData.saveColor(obj, recording_cutoff)
  492. if "record_state" in obj:
  493. getData.saveState(obj, recording_cutoff)
  494. if "record_visibility" in obj:
  495. getData.saveVisibility(obj, recording_cutoff)
  496. if "record_skateranim" in obj:
  497. getData.saveSkaterAnim(obj, recording_cutoff)
  498. if "record_skateranimf" in obj:
  499. getData.saveSkaterAnimF(obj, recording_cutoff)
  500. if "record_deckanim" in obj:
  501. getData.saveDeckAnim(obj, recording_cutoff)
  502. if "record_deckanimf" in obj:
  503. getData.saveDeckAnimF(obj, recording_cutoff)
  504. #if "record_sroll_vol" in obj:
  505. getData.saveSrollVol(obj, recording_cutoff)
  506. #if "record_sroll_pitch" in obj:
  507. getData.saveSrollPitch(obj, recording_cutoff)
  508. getData.saveSgrind_cementVol(obj, recording_cutoff)
  509. getData.saveSgrind_cementPitch(obj, recording_cutoff)
  510. getData.saveSgrind_railVol(obj, recording_cutoff)
  511. getData.saveSgrind_railPitch(obj, recording_cutoff)
  512. getData.saveSpopsound(obj, recording_cutoff)
  513. getData.saveSlandsound(obj, recording_cutoff)
  514. getData.saveSdeckvis(obj, recording_cutoff)
  515. def breakOut():
  516. num = 1
  517. obj = scene.objects["control_cube.002"]
  518. if num == 1:
  519. #for obj in scene.objects:
  520. obj.restoreDynamics()
  521. try:
  522. name, state = readData.returnState(own["objIndex"], own["valueIndex"])
  523. obj.state = state
  524. except:
  525. pass