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.

aiRecord.py 21KB

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