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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  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:
  139. print('npc positioning not working')
  140. #pass
  141. #-----Orientation-----#
  142. own["lengthOri"] = readData.getLengthOri(own)
  143. lengthOri = own["lengthOri"]
  144. valueIndex = own['valueIndex']
  145. #print(valueIndex, objIndex, 'value Index')
  146. #if lengthPos:
  147. if lengthOri:
  148. if valueIndex > lengthOri-1:
  149. own["valueIndex"] = 0
  150. if objIndex < 0:
  151. own["objIndex"] = lengthOri-2
  152. name, orientation = readData.returnOrientation(objIndex, valueIndex, own)
  153. oXYZ = own.localOrientation.to_euler()
  154. oXYZ[0] = float(orientation[0])
  155. oXYZ[1] = float(orientation[1])
  156. oXYZ[2] = float(orientation[2])
  157. try:
  158. if own['rpStartLoc_set'] == True:
  159. own.localOrientation = oXYZ.to_matrix()
  160. deck.localOrientation = oXYZ.to_matrix()
  161. trucks.localOrientation = oXYZ.to_matrix()
  162. rot = [ 0.0, 0.0, -1.570796327]
  163. own.applyRotation(rot,True)
  164. else:
  165. own['rpStartLoc_set'] = True
  166. except:
  167. print('npc orientation not working')
  168. # #-----Scale-----#
  169. # own["lengthSca"] = readData.getLengthSca()
  170. # lengthSca = own["lengthSca"]
  171. #
  172. # if lengthSca:
  173. #
  174. # if valueIndex > lengthSca-1:
  175. # own["valueIndex"] = 0
  176. # if objIndex < 0:
  177. # own["objIndex"] = lengthSca-2
  178. #
  179. # name, scale = readData.returnScale(objIndex, valueIndex)
  180. #
  181. # if name in scene.objects:
  182. # try:
  183. # scene.objects[name].localScale = scale
  184. # except:
  185. # pass
  186. # #-----Color-----#
  187. # own["lengthCol"] = readData.getLengthCol()
  188. # lengthCol = own["lengthCol"]
  189. #
  190. # if lengthCol:
  191. # if valueIndex > lengthCol-1:
  192. # own["valueIndex"] = 0
  193. # if objIndex < 0:
  194. # own["objIndex"] = lengthCol-2
  195. # name, color = readData.returnColor(objIndex, valueIndex)
  196. #
  197. # if name in scene.objects:
  198. # try:
  199. # scene.objects[name].color = color
  200. # except:
  201. # pass
  202. # #-----Visibility-----#
  203. # own["lengthVis"] = readData.getLengthVis()
  204. # lengthVis = own["lengthVis"]
  205. #
  206. # if lengthVis:
  207. # if valueIndex > lengthVis-1:
  208. # own["valueIndex"] = 0
  209. # if objIndex < 0:
  210. # own["objIndex"] = lengthVis-2
  211. # name, visible = readData.returnVisibility(objIndex, valueIndex)
  212. #
  213. # if name in scene.objects:
  214. # try:
  215. # scene.objects[name].visible = int(visible)
  216. # except:
  217. # pass
  218. #-----Skater Animation Name-----#
  219. own["lengthSkaterAnim"] = readData.getLengthSkaterAnim(own)
  220. lengthSkaterAnim = own["lengthSkaterAnim"]
  221. #print("lengthskateranim", lengthSkaterAnim)
  222. if lengthSkaterAnim:
  223. if valueIndex > lengthSkaterAnim-1:
  224. own["valueIndex"] = 0
  225. if objIndex < 0:
  226. own["objIndex"] = lengthSkaterAnim-2
  227. name, skateranim = readData.returnSkaterAnim(objIndex, valueIndex, own)
  228. name, PAF = readData.returnSkaterAnimF(objIndex, valueIndex, own)
  229. PAF = round(float(PAF), 1)
  230. #print(valueIndex, skateranim, PAF, 'sa')
  231. PAF = float(PAF)
  232. if skater in own.children:
  233. #print("name in")
  234. try:
  235. skater.stopAction(0)
  236. skater.stopAction(1)
  237. skater.stopAction(2)
  238. skater.stopAction(3)
  239. skater.stopAction(9999)
  240. if skater != '' and skateranim != 'control_cube.002':
  241. skater.playAction(skateranim, PAF,PAF, layer=2, play_mode=1, speed=1)
  242. #print("Playing: ", skater, skateranim, PAF)
  243. except:
  244. print("something is wrong")
  245. #-----Deck Animation Name-----#
  246. own["lengthDeckAnim"] = readData.getLengthDeckAnim(own)
  247. lengthDeckAnim = own["lengthDeckAnim"]
  248. #print("lengthDeckanim", lengthDeckAnim)
  249. if lengthDeckAnim:
  250. if valueIndex > lengthDeckAnim-1:
  251. own["valueIndex"] = 0
  252. if objIndex < 0:
  253. own["objIndex"] = lengthDeckAnim-2
  254. name, deckanim = readData.returnDeckAnim(objIndex, valueIndex, own)
  255. name, DAF = readData.returnDeckAnimF(objIndex, valueIndex, own)
  256. name = 'npc_ed_deck'
  257. DAF = float(DAF)
  258. if deck in own.children:
  259. #print("name in")
  260. try:
  261. if deck != '' and deckanim != 'control_cube.002':
  262. deck.playAction(deckanim, DAF,DAF, layer=2, play_mode=1, speed=1)
  263. trucks.playAction(deckanim, DAF,DAF, layer=2, play_mode=1, speed=1)
  264. #print("Playing: ", deckanim, PAF)
  265. #print("Playing: ", deck, deckanim, DAF)
  266. except:
  267. print("deck something is wrong")
  268. #pass
  269. ##
  270. # #-----sroll-----#
  271. # own["lengthSrollVol"] = readData.getLengthSrollVol()
  272. # lengthSrollVol = own["lengthSrollVol"]
  273. # if lengthSrollVol:
  274. # if valueIndex > lengthSrollVol-1:
  275. # own["valueIndex"] = 0
  276. # if objIndex < 0:
  277. # own["objIndex"] = lengthSrollVol-2
  278. # name, srollVol = readData.returnSrollVol(objIndex, valueIndex)
  279. # name, srollPitch = readData.returnSrollPitch(objIndex, valueIndex)
  280. # if name in scene.objects:
  281. # try:
  282. # cube = scene.objects["control_cube.002"]
  283. # srollVol = round(srollVol, 2)
  284. # act = cube.actuators["sroll"]
  285. # if srollVol < .12:
  286. # act.volume = srollVol
  287. # act.pitch = srollPitch
  288. # act.startSound()
  289. # except:
  290. # pass
  291. ####
  292. ##
  293. # #-----grind cement-----#
  294. # own["lengthSgrind_cementVol"] = readData.getLengthSgrind_cementVol()
  295. # lengthSgrind_cementVol = own["lengthSgrind_cementVol"]
  296. # if lengthSgrind_cementVol:
  297. # if valueIndex > lengthSgrind_cementVol-1:
  298. # own["valueIndex"] = 0
  299. # if objIndex < 0:
  300. # own["objIndex"] = lengthSgrind_cementVol-2
  301. # name, sgrind_cementVol = readData.returnSgrind_cementVol(objIndex, valueIndex)
  302. # name, sgrind_cementPitch = readData.returnSgrind_cementPitch(objIndex, valueIndex)
  303. # if name in scene.objects:
  304. # try:
  305. # cube = scene.objects["control_cube.002"]
  306. # sgrind_cementVol = round(sgrind_cementVol, 2)
  307. # act = cube.actuators["grind_cement"]
  308. # if sgrind_cementVol < .2:
  309. # act.volume = sgrind_cementVol
  310. # act.pitch = sgrind_cementPitch
  311. # act.startSound()
  312. #
  313. # except:
  314. # pass
  315. ####
  316. ##
  317. # #-----grind rail-----#
  318. # own["lengthSgrind_railVol"] = readData.getLengthSgrind_railVol()
  319. # lengthSgrind_railVol = own["lengthSgrind_railVol"]
  320. # if lengthSgrind_railVol:
  321. # if valueIndex > lengthSgrind_railVol-1:
  322. # own["valueIndex"] = 0
  323. # if objIndex < 0:
  324. # own["objIndex"] = lengthSgrind_railVol-2
  325. # name, sgrind_railVol = readData.returnSgrind_railVol(objIndex, valueIndex)
  326. # name, sgrind_railPitch = readData.returnSgrind_railPitch(objIndex, valueIndex)
  327. # if name in scene.objects:
  328. # try:
  329. # cube = scene.objects["control_cube.002"]
  330. # sgrind_railVol = round(sgrind_railVol, 2)
  331. # act = cube.actuators["grind_rail"]
  332. # if sgrind_railVol < .2:
  333. # act.volume = sgrind_railVol
  334. # act.pitch = sgrind_railPitch
  335. # act.startSound()
  336. # #print("grindsound = ", sgrind_railVol, sgrind_railPitch)
  337. # except:
  338. # pass
  339. ####
  340. ##
  341. # #-----pop sound-----#
  342. # own["lengthSpopsound"] = readData.getLengthSpopsound()
  343. # lengthSpopsound = own["lengthSpopsound"]
  344. # if lengthSpopsound:
  345. # if valueIndex > lengthSpopsound-1:
  346. # own["valueIndex"] = 0
  347. # if objIndex < 0:
  348. # own["objIndex"] = lengthSpopsound-2
  349. # name, spopsound = readData.returnSpopsound(objIndex, valueIndex)
  350. # if name in scene.objects:
  351. # #act = sound_empty.actuators["pop"]
  352. # try:
  353. # #cube = scene.objects[sound_empty]
  354. # spopsound = round(spopsound, 2)
  355. # act = cube.actuators["pop"]
  356. # #act = sound_empty.actuators["pop"]
  357. # if spopsound == 1:
  358. # #act.volume_maximum = .7
  359. # #act.is3D = True
  360. # #act.distance_reference = 10.0
  361. # #act.distance_maximum = 50.0
  362. # act.volume = .6
  363. # act.startSound()
  364. # #print("grindsound = ", spopsound, sgrind_railPitch)
  365. # except:
  366. # print("sound passed")
  367. # pass
  368. ####
  369. ##
  370. # #-----land sound-----#
  371. # own["lengthSlandsound"] = readData.getLengthSlandsound()
  372. # lengthSlandsound = own["lengthSlandsound"]
  373. # if lengthSlandsound:
  374. # if valueIndex > lengthSlandsound-1:
  375. # own["valueIndex"] = 0
  376. # if objIndex < 0:
  377. # own["objIndex"] = lengthSlandsound-2
  378. # name, slandsound = readData.returnSlandsound(objIndex, valueIndex)
  379. # if name in scene.objects:
  380. # try:
  381. # cube = scene.objects["control_cube.002"]
  382. # slandsound = round(slandsound, 2)
  383. # act = cube.actuators["land"]
  384. # if slandsound == 1:
  385. # act.volume = .6
  386. # act.startSound()
  387. # #print("grindsound = ", slandsound, sgrind_railPitch)
  388. # except:
  389. # pass
  390. ####
  391. ####
  392. ##
  393. # #-----land sound-----#
  394. # own["lengthSdeckvis"] = readData.getLengthSdeckvis()
  395. # lengthSdeckvis = own["lengthSdeckvis"]
  396. # if lengthSdeckvis:
  397. # if valueIndex > lengthSdeckvis-1:
  398. # own["valueIndex"] = 0
  399. # if objIndex < 0:
  400. # own["objIndex"] = lengthSdeckvis-2
  401. # name, sdeckvis = readData.returnSdeckvis(objIndex, valueIndex)
  402. #
  403. #
  404. # if name in scene.objects:
  405. # try:
  406. # cube = scene.objects["control_cube.002"]
  407. # if sdeckvis == 1:
  408. # #print('setting deck visible')
  409. # deckact.visibility = True
  410. # trucksact.visibility = True
  411. # wheel1act.visibility = True
  412. # wheel2act.visibility = True
  413. # wheel3act.visibility = True
  414. # wheel4act.visibility = True
  415. # cont.activate(deck.actuators['Visibility'])
  416. # cont.activate(trucks.actuators['Visibility'])
  417. # cont.activate(wheel1.actuators['Visibility'])
  418. # cont.activate(wheel2.actuators['Visibility'])
  419. # cont.activate(wheel3.actuators['Visibility'])
  420. # cont.activate(wheel4.actuators['Visibility'])
  421. # for n in scene.objects:
  422. # if 'throw_deck' in n.name and 'empty' not in n.name:
  423. # n.endObject()
  424. ## if 'throw_deck' in scene.objects:
  425. # #print('ending td', n)
  426. # cont.activate(throw_deck.actuators['end_throw_deck'])
  427. #
  428. # #throwdeck.visibility = False
  429. # else:
  430. # #print('setting deck invisible')
  431. # deckact.visibility = False
  432. # trucksact.visibility = False
  433. # wheel1act.visibility = False
  434. # wheel2act.visibility = False
  435. # wheel3act.visibility = False
  436. # wheel4act.visibility = False
  437. # cont.activate(deck.actuators['Visibility'])
  438. # cont.activate(trucks.actuators['Visibility'])
  439. # cont.activate(wheel1.actuators['Visibility'])
  440. # cont.activate(wheel2.actuators['Visibility'])
  441. # cont.activate(wheel3.actuators['Visibility'])
  442. # cont.activate(wheel4.actuators['Visibility'])
  443. # #if throw_deck == None:
  444. # if 'throw_deck' not in scene.objects:
  445. # #print('no throwdeck')
  446. # #cont.deactivate(throw_deck.actuators['end_throw_deck'])
  447. # #throw_deck_empty.wordPosition.z = throw_deck_empty.wordPosition.z + 1
  448. # cont.activate(throw_deck_empty.actuators['throw_dec_act'])
  449. # #scene.addObject('throw_deck')
  450. # #throwdeck.visibility = True
  451. # throw_deck.suspendDynamics()
  452. # except:
  453. # pass
  454. ###
  455. # #-----Position-----#
  456. # own["lengthtdPos"] = readData.getLengthtdPos()
  457. # lengthPos = own["lengthtdPos"]
  458. #
  459. # if lengthPos:
  460. #
  461. # if objIndex > lengthPos-1:
  462. # own["objIndex"] = 0
  463. # if objIndex < 0:
  464. # own["objIndex"] = lengthPos-2
  465. # name, position = readData.returntdPosition(objIndex, valueIndex)
  466. # name = 'throw_deck'
  467. # if name in scene.objects:
  468. # try:
  469. # scene.objects[name].worldPosition = position
  470. # #print('recording tdPos', position)
  471. # except:
  472. # pass
  473. # #-----Orientation-----#
  474. # own["lengthtdOri"] = readData.getLengthtdOri()
  475. # lengthOri = own["lengthtdOri"]
  476. #
  477. # #if lengthPos:
  478. # if lengthOri:
  479. #
  480. # if valueIndex > lengthOri-1:
  481. # own["valueIndex"] = 0
  482. # if objIndex < 0:
  483. # own["objIndex"] = lengthOri-2
  484. # name, orientation = readData.returntdOrientation(objIndex, valueIndex)
  485. # name = 'throw_deck'
  486. # if name in scene.objects:
  487. #
  488. # oXYZ = scene.objects[name].localOrientation.to_euler()
  489. # oXYZ[0] = float(orientation[0])
  490. # oXYZ[1] = float(orientation[1])
  491. # oXYZ[2] = float(orientation[2])
  492. #
  493. # try:
  494. # #print('recording tdOri')
  495. # scene.objects[name].localOrientation = oXYZ.to_matrix()
  496. # except:
  497. # pass
  498. ##
  499. # #-----revert sound-----#
  500. # own["lengthSrevertsound"] = readData.getLengthSrevertsound()
  501. # lengthSrevertsound = own["lengthSrevertsound"]
  502. # if lengthSrevertsound:
  503. # if valueIndex > lengthSrevertsound-1:
  504. # own["valueIndex"] = 0
  505. # if objIndex < 0:
  506. # own["objIndex"] = lengthSrevertsound-2
  507. # name, srevertsound = readData.returnSrevertsound(objIndex, valueIndex)
  508. # if name in scene.objects:
  509. # try:
  510. # #cube = scene.objects[sound_empty]
  511. # srevertsound = round(srevertsound, 2)
  512. # act = cube.actuators["revertSound"]
  513. # if srevertsound == 1:
  514. # act.startSound()
  515. # #print("grindsound = ", spopsound, sgrind_railPitch)
  516. # except:
  517. # print("sound passed")
  518. # pass
  519. def main(recording_cutoff, cc):
  520. pass
  521. def breakOut():
  522. pass