SceneVRTouch.cs 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using MaidStatus;
  5. using UnityEngine;
  6. public class SceneVRTouch : MonoBehaviour
  7. {
  8. private void Start()
  9. {
  10. GameMain.Instance.CharacterMgr.DeactivateCharaAll();
  11. this.m_maid = GameMain.Instance.CharacterMgr.GetMaid(0);
  12. this.m_maid.Visible = true;
  13. Dictionary<string, string> tag_backup = GameMain.Instance.ScriptMgr.adv_kag.tag_backup;
  14. string a;
  15. if (tag_backup != null && tag_backup.TryGetValue("name", out a) && a == "SceneVRTouch")
  16. {
  17. string text;
  18. if (tag_backup.TryGetValue("label_end", out text))
  19. {
  20. this.m_strScriptArgLabelEnd = text;
  21. }
  22. if (tag_backup.TryGetValue("label_ft", out text))
  23. {
  24. this.m_strScriptArgLabelFT = text;
  25. }
  26. }
  27. GameMain.Instance.ScriptMgr.adv_kag.MessageWindowMgr.CloseMessageWindowPanel();
  28. this.m_maid.EyeToCamera(Maid.EyeMoveType.目と顔を向ける, 0f);
  29. GameMain.Instance.MainLight.Reset();
  30. GameMain.Instance.MainCamera.Reset(CameraMain.CameraType.Target, true);
  31. GameMain.Instance.MainCamera.SetPos(new Vector3(0f, 1.4871f, 1f));
  32. GameMain.Instance.MainCamera.SetRotation(new Vector3(0f, -180f, 0f));
  33. this.m_lstBgInfo = this.ReadBGList();
  34. foreach (SceneVRTouch.BGInfo bginfo in this.m_lstBgInfo)
  35. {
  36. SceneVRTouch.ButtonBG buttonBG = new SceneVRTouch.ButtonBG();
  37. buttonBG.texIcon = bginfo.texThumb;
  38. buttonBG.m_bg = bginfo;
  39. this.m_listBg.Add(buttonBG);
  40. }
  41. this.m_listTouchMotionScript = this.ReadMotionList();
  42. foreach (SceneVRTouch.TouchMotionScript touchMotionScript in this.m_listTouchMotionScript)
  43. {
  44. SceneVRTouch.ButtonPose buttonPose = new SceneVRTouch.ButtonPose();
  45. buttonPose.texIcon = touchMotionScript.m_texThumb;
  46. buttonPose.m_motion = touchMotionScript;
  47. this.m_listPose.Add(buttonPose);
  48. }
  49. this.m_dicTouchVoiceScript = this.ReadVoiceList();
  50. this.m_TouchMgr = new VRTouchMgr();
  51. this.m_MotionScriptMgr = GameMain.Instance.ScriptMgrFast;
  52. GameObject gameObject = GameObject.Find("Cancel");
  53. this.m_btnEnd = gameObject.GetComponent<UIButton>();
  54. EventDelegate.Add(this.m_btnEnd.onClick, new EventDelegate.Callback(this.OnButtonEndClick));
  55. GameMain.Instance.MainCamera.FadeOut(0f, false, null, true, default(Color));
  56. base.StartCoroutine(this.CoLoadWait());
  57. }
  58. public void OnDestroy()
  59. {
  60. if (this.m_MotionScriptMgr != null)
  61. {
  62. this.m_MotionScriptMgr.StopAndResetScriptAll();
  63. }
  64. }
  65. private IEnumerator CoLoadWait()
  66. {
  67. while (GameMain.Instance.CharacterMgr.IsBusy())
  68. {
  69. yield return null;
  70. }
  71. GameMain.Instance.CharacterMgr.ResetCharaPosAll();
  72. this.m_maid.boMabataki = true;
  73. MaidColliderCollect.AddCollider(this.m_maid, MaidColliderCollect.ColliderType.Grab);
  74. MaidColliderCollect.AddCollider(this.m_maid, MaidColliderCollect.ColliderType.Touch);
  75. foreach (SceneVRTouch.TouchMotionScript touchMotionScript in this.m_listTouchMotionScript)
  76. {
  77. string[] array = touchMotionScript.m_strNeutralScript.Split(new char[]
  78. {
  79. '*'
  80. });
  81. this.m_MotionScriptMgr.LoadAndCacheScript(array[0]);
  82. this.m_MotionScriptMgr.LoadMotionCacheKag(array[0]);
  83. foreach (KeyValuePair<VRTouchMgr.ETouchPos, Dictionary<VRTouchMgr.ETouchBehavior, string>> keyValuePair in touchMotionScript.m_dicTouchScript)
  84. {
  85. foreach (KeyValuePair<VRTouchMgr.ETouchBehavior, string> keyValuePair2 in keyValuePair.Value)
  86. {
  87. array = keyValuePair2.Value.Split(new char[]
  88. {
  89. '*'
  90. });
  91. this.m_MotionScriptMgr.LoadAndCacheScript(array[0]);
  92. this.m_MotionScriptMgr.LoadMotionCacheKag(array[0]);
  93. }
  94. }
  95. }
  96. this.BgAndMotion(this.m_lstBgInfo[0]);
  97. GameMain.Instance.MainCamera.FadeIn(1f, false, new CameraMain.dgOnCompleteFade(this.OnCompleteFadeIn), true, true, default(Color));
  98. yield break;
  99. }
  100. private void OnCompleteFadeIn()
  101. {
  102. }
  103. private List<SceneVRTouch.BGInfo> ReadBGList()
  104. {
  105. List<SceneVRTouch.BGInfo> list = new List<SceneVRTouch.BGInfo>();
  106. string text = "vr_touch_bg.nei";
  107. NDebug.Assert(GameUty.FileSystem.IsExistentFile(text), "背景リストファイルが読み取れません。");
  108. using (AFileBase afileBase = GameUty.FileSystem.FileOpen(text))
  109. {
  110. using (CsvParser csvParser = new CsvParser())
  111. {
  112. bool condition = csvParser.Open(afileBase);
  113. NDebug.Assert(condition, text + "\nopen failed.");
  114. for (int i = 1; i < csvParser.max_cell_y; i++)
  115. {
  116. if (csvParser.IsCellToExistData(0, i))
  117. {
  118. SceneVRTouch.BGInfo bginfo = new SceneVRTouch.BGInfo();
  119. bginfo.nID = csvParser.GetCellAsInteger(0, i);
  120. bginfo.strThumbFileName = csvParser.GetCellAsString(1, i);
  121. bginfo.strName = csvParser.GetCellAsString(2, i);
  122. bginfo.strScriptTagFT = csvParser.GetCellAsString(3, i);
  123. bginfo.strFileName = csvParser.GetCellAsString(4, i);
  124. bginfo.strBGM = csvParser.GetCellAsString(5, i);
  125. bginfo.strCondition = csvParser.GetCellAsString(6, i);
  126. if (!string.IsNullOrEmpty(bginfo.strCondition))
  127. {
  128. YotogiStage.Data data = YotogiStage.GetData(bginfo.strCondition);
  129. if (data.isYotogiPlayable(GameMain.Instance.CharacterMgr.status.clubGrade, true))
  130. {
  131. goto IL_21A;
  132. }
  133. }
  134. string cellAsString = csvParser.GetCellAsString(7, i);
  135. string[] array = cellAsString.Split(new char[]
  136. {
  137. ' ',
  138. ',',
  139. 'f'
  140. }, StringSplitOptions.RemoveEmptyEntries);
  141. bginfo.vPos = new Vector3(float.Parse(array[0]), float.Parse(array[1]), float.Parse(array[2]));
  142. string text2 = csvParser.GetCellAsString(8, i);
  143. text2 = text2.Trim(new char[]
  144. {
  145. ' ',
  146. 'f'
  147. });
  148. bginfo.fRot = float.Parse(text2);
  149. bginfo.strValidPack = csvParser.GetCellAsString(9, i);
  150. if (!string.IsNullOrEmpty(bginfo.strThumbFileName))
  151. {
  152. bginfo.texThumb = ImportCM.CreateTexture(bginfo.strThumbFileName + ".tex");
  153. }
  154. else
  155. {
  156. Debug.LogWarning("BGボタンテクスチャの指定がありません。" + bginfo.strName);
  157. bginfo.texThumb = Resources.Load<Texture2D>("System/Texture/unsupported");
  158. }
  159. list.Add(bginfo);
  160. }
  161. IL_21A:;
  162. }
  163. }
  164. }
  165. return list;
  166. }
  167. private Dictionary<VRTouchMgr.ETouchPos, SceneVRTouch.TouchVoiceScript> ReadVoiceList()
  168. {
  169. Dictionary<VRTouchMgr.ETouchPos, SceneVRTouch.TouchVoiceScript> dictionary = new Dictionary<VRTouchMgr.ETouchPos, SceneVRTouch.TouchVoiceScript>();
  170. string text = "vr_touch_voice.nei";
  171. NDebug.Assert(GameUty.FileSystem.IsExistentFile(text), "背景リストファイルが読み取れません。");
  172. ScriptManager scriptMgr = GameMain.Instance.ScriptMgr;
  173. this.m_kag = new VRTouchKagManager(this, scriptMgr.tjs, scriptMgr);
  174. this.m_kag.enabled = true;
  175. this.m_kag.Initialize();
  176. using (AFileBase afileBase = GameUty.FileSystem.FileOpen(text))
  177. {
  178. using (CsvParser csvParser = new CsvParser())
  179. {
  180. bool condition = csvParser.Open(afileBase);
  181. NDebug.Assert(condition, text + "\nopen failed.");
  182. for (int i = 1; i < csvParser.max_cell_y; i++)
  183. {
  184. if (csvParser.IsCellToExistData(0, i))
  185. {
  186. string cellAsString = csvParser.GetCellAsString(0, i);
  187. VRTouchMgr.ETouchPos key = VRTouchMgr.ETouchPos.無し;
  188. try
  189. {
  190. key = (VRTouchMgr.ETouchPos)Enum.Parse(typeof(VRTouchMgr.ETouchPos), cellAsString);
  191. }
  192. catch
  193. {
  194. NDebug.Assert("このタッチ部位は未定義です。" + cellAsString, false);
  195. }
  196. SceneVRTouch.TouchVoiceScript touchVoiceScript;
  197. if (!dictionary.TryGetValue(key, out touchVoiceScript))
  198. {
  199. touchVoiceScript = new SceneVRTouch.TouchVoiceScript();
  200. dictionary.Add(key, touchVoiceScript);
  201. }
  202. string cellAsString2 = csvParser.GetCellAsString(1, i);
  203. VRTouchMgr.ETouchBehavior key2 = VRTouchMgr.ETouchBehavior.無し;
  204. try
  205. {
  206. key2 = (VRTouchMgr.ETouchBehavior)Enum.Parse(typeof(VRTouchMgr.ETouchBehavior), cellAsString2);
  207. }
  208. catch
  209. {
  210. NDebug.Assert("この行動は未定義です。" + cellAsString2, false);
  211. }
  212. SceneVRTouch.TouchVoiceScript.TouchBehavior touchBehavior;
  213. if (!touchVoiceScript.m_listBeh.TryGetValue(key2, out touchBehavior))
  214. {
  215. touchBehavior = new SceneVRTouch.TouchVoiceScript.TouchBehavior();
  216. touchVoiceScript.m_listBeh.Add(key2, touchBehavior);
  217. }
  218. int num = csvParser.GetCellAsInteger(2, i) - 1;
  219. SceneVRTouch.TouchVoiceScript.TouchOrder touchOrder;
  220. if (!touchBehavior.m_dicOrderNo.TryGetValue(num, out touchOrder))
  221. {
  222. touchOrder = new SceneVRTouch.TouchVoiceScript.TouchOrder();
  223. touchBehavior.m_dicOrderNo.Add(num, touchOrder);
  224. if (touchBehavior.nOrderNoMax < num)
  225. {
  226. touchBehavior.nOrderNoMax = num;
  227. }
  228. }
  229. touchOrder.m_nLimit = csvParser.GetCellAsInteger(3, i);
  230. touchOrder.m_nTime = csvParser.GetCellAsInteger(4, i);
  231. string text2 = csvParser.GetCellAsString(5, i);
  232. if (string.IsNullOrEmpty(text2))
  233. {
  234. foreach (string str in this.m_strConditionNameTbl)
  235. {
  236. text2 = text2 + str + "|";
  237. }
  238. }
  239. int num2 = 0;
  240. int num3 = 0;
  241. string text3 = csvParser.GetCellAsString(6, i);
  242. if (string.IsNullOrEmpty(text3))
  243. {
  244. text3 = "A^M";
  245. }
  246. string[] array = text3.Split(new char[]
  247. {
  248. '^'
  249. });
  250. num2 = (int)(array[0][0] - 'A');
  251. num3 = (int)(array[1][0] - 'A');
  252. int num4 = 0;
  253. int num5 = 999;
  254. string text4 = csvParser.GetCellAsString(7, i);
  255. if (string.IsNullOrEmpty(text4))
  256. {
  257. text4 = "0^999";
  258. }
  259. string[] array2 = text4.Split(new char[]
  260. {
  261. '^'
  262. });
  263. num4 = int.Parse(array2[0]);
  264. num5 = int.Parse(array2[1]);
  265. string cellAsString3 = csvParser.GetCellAsString(8, i);
  266. string cellAsString4 = csvParser.GetCellAsString(9, i);
  267. string cellAsString5 = csvParser.GetCellAsString(10, i);
  268. string[] array3 = text2.Split(new char[]
  269. {
  270. '|'
  271. });
  272. foreach (string text5 in array3)
  273. {
  274. if (!string.IsNullOrEmpty(text5) && !(text5 == "無し"))
  275. {
  276. Relation relation = (Relation)Array.IndexOf<string>(this.m_strConditionNameTbl, text5);
  277. SceneVRTouch.TouchVoiceScript.TouchCondition touchCondition;
  278. if (!touchOrder.m_dicCondition.TryGetValue(relation, out touchCondition))
  279. {
  280. touchCondition = new SceneVRTouch.TouchVoiceScript.TouchCondition();
  281. touchCondition.eRelation = relation;
  282. touchOrder.m_dicCondition.Add(relation, touchCondition);
  283. }
  284. SceneVRTouch.TouchVoiceScript.Cup cup = touchCondition.FindCupRange(num2, num3);
  285. if (cup == null)
  286. {
  287. cup = new SceneVRTouch.TouchVoiceScript.Cup();
  288. cup.nCupLower = num2;
  289. cup.nCupUpper = num3;
  290. touchCondition.m_listCup.Add(cup);
  291. }
  292. SceneVRTouch.TouchVoiceScript.Waist waist = cup.FindWaistRange(num4, num5);
  293. if (waist == null)
  294. {
  295. waist = new SceneVRTouch.TouchVoiceScript.Waist();
  296. waist.nWaistLower = num4;
  297. waist.nWaistUpper = num5;
  298. cup.m_listWaist.Add(waist);
  299. }
  300. waist.strScriptFirst = cellAsString3;
  301. waist.strScriptBreath = cellAsString4;
  302. waist.strScriptAfter = cellAsString5;
  303. Dictionary<int, SceneVRTouch.RandVoiceList> randVoiceListFirst = this.ScriptRead(cellAsString3);
  304. Dictionary<int, SceneVRTouch.RandVoiceList> randVoiceListBreath = this.ScriptRead(cellAsString4);
  305. Dictionary<int, SceneVRTouch.RandVoiceList> randVoiceListAfter = this.ScriptRead(cellAsString5);
  306. waist.SetRandVoiceListFirst(randVoiceListFirst);
  307. waist.SetRandVoiceListBreath(randVoiceListBreath);
  308. waist.SetRandVoiceListAfter(randVoiceListAfter);
  309. }
  310. }
  311. }
  312. }
  313. }
  314. }
  315. if (this.m_kag != null)
  316. {
  317. this.m_kag.Dispose();
  318. this.m_kag = null;
  319. }
  320. return dictionary;
  321. }
  322. private Dictionary<int, SceneVRTouch.RandVoiceList> ScriptRead(string f_strScriptFileName)
  323. {
  324. Dictionary<int, SceneVRTouch.RandVoiceList> dicSet = new Dictionary<int, SceneVRTouch.RandVoiceList>();
  325. if (string.IsNullOrEmpty(f_strScriptFileName))
  326. {
  327. return null;
  328. }
  329. this.m_kag.SetShuffleDg(delegate(int f_nKouhun, string f_strVoiceFileName, string f_strFace, string f_strFaceBlend)
  330. {
  331. SceneVRTouch.RandVoiceList randVoiceList = null;
  332. if (!dicSet.TryGetValue(f_nKouhun, out randVoiceList))
  333. {
  334. randVoiceList = new SceneVRTouch.RandVoiceList();
  335. dicSet.Add(f_nKouhun, randVoiceList);
  336. }
  337. randVoiceList.AddSet(f_strVoiceFileName, f_strFace, f_strFaceBlend);
  338. });
  339. this.m_kag.LoadScriptFile(ScriptManager.ReplacePersonal(this.m_maid, f_strScriptFileName) + ".ks", string.Empty);
  340. this.m_kag.Exec();
  341. return dicSet;
  342. }
  343. private List<SceneVRTouch.TouchMotionScript> ReadMotionList()
  344. {
  345. List<SceneVRTouch.TouchMotionScript> list = new List<SceneVRTouch.TouchMotionScript>();
  346. string text = "vr_touch_motion.nei";
  347. NDebug.Assert(GameUty.FileSystem.IsExistentFile(text), "モーションリストファイルが読み取れません。");
  348. using (AFileBase afileBase = GameUty.FileSystem.FileOpen(text))
  349. {
  350. using (CsvParser csvParser = new CsvParser())
  351. {
  352. bool condition = csvParser.Open(afileBase);
  353. NDebug.Assert(condition, text + "\nopen failed.");
  354. for (int i = 1; i < csvParser.max_cell_y; i++)
  355. {
  356. if (csvParser.IsCellToExistData(0, i))
  357. {
  358. SceneVRTouch.TouchMotionScript touchMotionScript = new SceneVRTouch.TouchMotionScript();
  359. touchMotionScript.m_nId = csvParser.GetCellAsInteger(0, i);
  360. touchMotionScript.m_strThumb = csvParser.GetCellAsString(1, i);
  361. touchMotionScript.m_strFTScript = csvParser.GetCellAsString(2, i);
  362. if (!string.IsNullOrEmpty(touchMotionScript.m_strFTScript))
  363. {
  364. touchMotionScript.m_strFTScript = ScriptManager.ReplacePersonal(this.m_maid, touchMotionScript.m_strFTScript) + ".ks";
  365. }
  366. touchMotionScript.m_strNeutralScript = csvParser.GetCellAsString(3, i);
  367. for (int j = 4; j < csvParser.max_cell_x; j++)
  368. {
  369. string cellAsString = csvParser.GetCellAsString(j, 0);
  370. string[] array = cellAsString.Split(new char[]
  371. {
  372. '_'
  373. });
  374. VRTouchMgr.ETouchPos f_pos = VRTouchMgr.ETouchPos.無し;
  375. try
  376. {
  377. f_pos = (VRTouchMgr.ETouchPos)Enum.Parse(typeof(VRTouchMgr.ETouchPos), array[0]);
  378. }
  379. catch
  380. {
  381. NDebug.Assert("この部位は未定義です。" + array[0], false);
  382. }
  383. VRTouchMgr.ETouchBehavior f_beh = VRTouchMgr.ETouchBehavior.無し;
  384. try
  385. {
  386. f_beh = (VRTouchMgr.ETouchBehavior)Enum.Parse(typeof(VRTouchMgr.ETouchBehavior), array[1]);
  387. }
  388. catch
  389. {
  390. NDebug.Assert("この行動は未定義です。" + array[1], false);
  391. }
  392. string cellAsString2 = csvParser.GetCellAsString(j, i);
  393. touchMotionScript.AddScript(f_pos, f_beh, cellAsString2);
  394. }
  395. if (!string.IsNullOrEmpty(touchMotionScript.m_strThumb))
  396. {
  397. touchMotionScript.m_texThumb = ImportCM.CreateTexture(touchMotionScript.m_strThumb + ".tex");
  398. }
  399. else
  400. {
  401. Debug.LogWarning("モーションボタンテクスチャの指定がありません。" + touchMotionScript.m_nId);
  402. touchMotionScript.m_texThumb = Resources.Load<Texture2D>("System/Texture/unsupported");
  403. }
  404. list.Add(touchMotionScript);
  405. }
  406. }
  407. }
  408. }
  409. return list;
  410. }
  411. public void Bg(SceneEdit.PVBInfo f_pvb)
  412. {
  413. SceneVRTouch.ButtonBG buttonBG = f_pvb as SceneVRTouch.ButtonBG;
  414. this.BgAndMotion(buttonBG.m_bg);
  415. }
  416. private void BgAndMotion(SceneVRTouch.BGInfo f_bi)
  417. {
  418. this.m_BGInfoNow = f_bi;
  419. GameMain.Instance.BgMgr.ChangeBg(f_bi.strFileName);
  420. GameMain.Instance.BgMgr.SetPos(f_bi.vPos);
  421. GameMain.Instance.BgMgr.SetRot(new Vector3(0f, f_bi.fRot, 0f));
  422. GameMain.Instance.SoundMgr.PlayBGM(f_bi.strBGM + ".ogg", 1f, true);
  423. this.Motion((this.m_MotionScriptNow != null) ? this.m_MotionScriptNow : this.m_listTouchMotionScript[0]);
  424. }
  425. public void Pose(SceneEdit.PVBInfo f_pvb)
  426. {
  427. SceneVRTouch.ButtonPose buttonPose = f_pvb as SceneVRTouch.ButtonPose;
  428. this.Motion(buttonPose.m_motion);
  429. }
  430. private void Motion(SceneVRTouch.TouchMotionScript f_motion)
  431. {
  432. this.m_MotionScriptNow = f_motion;
  433. if (!string.IsNullOrEmpty(f_motion.m_strFTScript) && !string.IsNullOrEmpty(this.m_BGInfoNow.strScriptTagFT))
  434. {
  435. GameMain.Instance.ScriptMgr.EvalScript("global.__vrtouch_first_file = '" + f_motion.m_strFTScript + "';");
  436. GameMain.Instance.ScriptMgr.EvalScript("global.__vrtouch_first_tag = '*" + this.m_BGInfoNow.strScriptTagFT + "';");
  437. GameMain.Instance.ScriptMgr.adv_kag.JumpLabel(this.m_strScriptArgLabelFT);
  438. GameMain.Instance.ScriptMgr.adv_kag.Exec();
  439. }
  440. else
  441. {
  442. Debug.LogWarning("モーションFTの指定がありませんでした。ID:" + f_motion.m_nId);
  443. }
  444. this.PlayMotionScript(f_motion.GetScriptNeutral());
  445. }
  446. private void PlayMotionScript(string f_strFileLabelName)
  447. {
  448. float realtimeSinceStartup = Time.realtimeSinceStartup;
  449. string[] array = f_strFileLabelName.Split(new char[]
  450. {
  451. '*'
  452. });
  453. this.m_MotionScriptMgr.LoadAndCacheScript(array[0]);
  454. this.m_MotionScriptMgr.StartMotionScript(array[0], "*" + array[1], 0, null);
  455. Debug.Log("PlayMotionScript time=" + (Time.realtimeSinceStartup - realtimeSinceStartup).ToString("F6"));
  456. }
  457. public void ClothesState(SceneEditInfo.ClothesState f_cs)
  458. {
  459. Maid maid = this.m_maid;
  460. if (f_cs == SceneEditInfo.ClothesState.Nude)
  461. {
  462. maid.body0.SetMaskMode(TBody.MaskMode.Nude);
  463. }
  464. else if (f_cs == SceneEditInfo.ClothesState.Underwear)
  465. {
  466. maid.body0.SetMaskMode(TBody.MaskMode.Underwear);
  467. }
  468. if (f_cs == SceneEditInfo.ClothesState.Wear)
  469. {
  470. maid.body0.SetMaskMode(TBody.MaskMode.None);
  471. }
  472. }
  473. private IEnumerator CoVoicePlayFirstAndBreath(SceneVRTouch.TouchVoiceScript.TouchOrder f_order, bool f_bFirstPlay, bool f_bForceFirstPlay)
  474. {
  475. this.m_bVoiceAfter = false;
  476. this.m_bSkippedPlayFirst = true;
  477. SceneVRTouch.TouchVoiceScript.TouchCondition cond = f_order.GetTouchCondition(this.m_maid);
  478. SceneVRTouch.TouchVoiceScript.Cup cup = cond.GetCup(this.m_maid);
  479. SceneVRTouch.TouchVoiceScript.Waist waist = cup.GetWaist(this.m_maid);
  480. int nKouhun = Math.Min((int)this.m_fKouhunNow, f_order.m_nLimit);
  481. SceneVRTouch.RandVoiceList randFirst = waist.GetRandVoiceListFirst(nKouhun);
  482. SceneVRTouch.RandVoiceList randBreath = waist.GetRandVoiceListBreath(nKouhun);
  483. SceneVRTouch.RandVoiceList randAfter = waist.GetRandVoiceListAfter(nKouhun);
  484. SceneVRTouch.RandVoiceList.Set setFirst = randFirst.GetVoiceFace();
  485. if (f_bFirstPlay && (f_bForceFirstPlay || !this.m_bNowPlayFirst))
  486. {
  487. if (this.m_maid.AudioMan.isPlay())
  488. {
  489. this.m_maid.AudioMan.Stop();
  490. }
  491. this.m_bNowPlayFirst = true;
  492. this.m_bSkippedPlayFirst = false;
  493. this.m_maid.AudioMan.LoadPlay(setFirst.m_strVoiceFileName, 0f, false, false);
  494. this.m_maid.FaceAnime(setFirst.m_strFace, 1f, 0);
  495. this.m_maid.FaceBlend((!string.IsNullOrEmpty(setFirst.m_strFaceBlend)) ? setFirst.m_strFaceBlend : "無し");
  496. }
  497. while (this.m_bNowPlayFirst)
  498. {
  499. if (!this.m_maid.AudioMan.isPlay())
  500. {
  501. this.m_bNowPlayFirst = false;
  502. break;
  503. }
  504. yield return null;
  505. }
  506. while (!this.m_bVoiceAfter)
  507. {
  508. SceneVRTouch.RandVoiceList.Set set = randBreath.GetVoiceFace();
  509. this.m_maid.AudioMan.LoadPlay(set.m_strVoiceFileName, 0f, false, false);
  510. this.m_maid.FaceAnime(set.m_strFace, 1f, 0);
  511. this.m_maid.FaceBlend((!string.IsNullOrEmpty(set.m_strFaceBlend)) ? set.m_strFaceBlend : "無し");
  512. while (this.m_maid.AudioMan.isPlay())
  513. {
  514. yield return null;
  515. }
  516. }
  517. for (;;)
  518. {
  519. SceneVRTouch.RandVoiceList.Set set2 = randAfter.GetVoiceFace();
  520. this.m_maid.AudioMan.LoadPlay(set2.m_strVoiceFileName, 0f, false, false);
  521. this.m_maid.FaceAnime(set2.m_strFace, 1f, 0);
  522. this.m_maid.FaceBlend((!string.IsNullOrEmpty(set2.m_strFaceBlend)) ? set2.m_strFaceBlend : "無し");
  523. while (this.m_maid.AudioMan.isPlay())
  524. {
  525. yield return null;
  526. }
  527. }
  528. yield break;
  529. }
  530. private void PlayVoice_First(SceneVRTouch.TouchVoiceScript.TouchOrder f_order, bool f_bFirstPlay, bool f_bForceFirstPlay)
  531. {
  532. float realtimeSinceStartup = Time.realtimeSinceStartup;
  533. if (this.m_coVoicePlayBraeth != null)
  534. {
  535. base.StopCoroutine(this.m_coVoicePlayBraeth);
  536. }
  537. this.m_coVoicePlayBraeth = base.StartCoroutine(this.CoVoicePlayFirstAndBreath(f_order, f_bFirstPlay, f_bForceFirstPlay));
  538. }
  539. private void PlayVoice_After()
  540. {
  541. this.m_bVoiceAfter = true;
  542. }
  543. private void OnButtonEndClick()
  544. {
  545. GameMain.Instance.MainCamera.FadeOut(1f, false, new CameraMain.dgOnCompleteFade(this.OnCompleteFadeOut), true, default(Color));
  546. }
  547. private void OnCompleteFadeOut()
  548. {
  549. if (!string.IsNullOrEmpty(this.m_strScriptArgLabelEnd))
  550. {
  551. Debug.Log("OnEndScene JumpTo " + this.m_strScriptArgLabelEnd);
  552. GameMain.Instance.ScriptMgr.adv_kag.JumpLabel(this.m_strScriptArgLabelEnd);
  553. GameMain.Instance.ScriptMgr.adv_kag.Exec();
  554. }
  555. }
  556. private void Update()
  557. {
  558. this.m_TouchMgr.FrameStart();
  559. bool flag = false;
  560. VRTouchMgr.EHand eTouchHandNow = VRTouchMgr.EHand.Non;
  561. VRTouchMgr.ETouchPos etouchPos = VRTouchMgr.ETouchPos.無し;
  562. VRTouchMgr.ETouchBehavior eTouchBehNow = VRTouchMgr.ETouchBehavior.無し;
  563. bool flag2 = false;
  564. float realtimeSinceStartup = Time.realtimeSinceStartup;
  565. foreach (KeyValuePair<VRTouchMgr.ETouchPos, SceneVRTouch.TouchVoiceScript> keyValuePair in this.m_dicTouchVoiceScript)
  566. {
  567. for (int i = 0; i <= 1; i++)
  568. {
  569. for (int j = 1; j <= 2; j++)
  570. {
  571. SceneVRTouch.TouchVoiceScript.TouchBehavior touchBehavior;
  572. if (this.m_TouchMgr.GetBehaviorTouchDown((VRTouchMgr.EHand)i, keyValuePair.Key, (VRTouchMgr.ETouchBehavior)j, 0) && keyValuePair.Value.m_listBeh.TryGetValue((VRTouchMgr.ETouchBehavior)j, out touchBehavior))
  573. {
  574. if (this.m_eTouchPosNow == VRTouchMgr.ETouchPos.無し || (this.m_eTouchHandNow == (VRTouchMgr.EHand)i && this.m_eTouchPosNow == keyValuePair.Key && this.m_eTouchBehNow != (VRTouchMgr.ETouchBehavior)j))
  575. {
  576. this.m_nOrderNoNow = 0;
  577. flag = true;
  578. bool f_bFirstPlay = true;
  579. bool f_bForceFirstPlay = false;
  580. if (this.m_eTouchBehNow == VRTouchMgr.ETouchBehavior.掴む && j == 1)
  581. {
  582. f_bFirstPlay = false;
  583. }
  584. if (this.m_eTouchBehNow == VRTouchMgr.ETouchBehavior.触る && j == 2)
  585. {
  586. f_bForceFirstPlay = true;
  587. }
  588. if (this.m_eTouchBehNow == VRTouchMgr.ETouchBehavior.無し && j == 2)
  589. {
  590. f_bForceFirstPlay = true;
  591. }
  592. eTouchHandNow = (this.m_eTouchHandNow = (VRTouchMgr.EHand)i);
  593. etouchPos = (this.m_eTouchPosNow = keyValuePair.Key);
  594. eTouchBehNow = (this.m_eTouchBehNow = (VRTouchMgr.ETouchBehavior)j);
  595. this.PlayVoice_First(touchBehavior.m_dicOrderNo[this.m_nOrderNoNow], f_bFirstPlay, f_bForceFirstPlay);
  596. this.PlayMotionScript(this.m_MotionScriptNow.GetScript(this.m_eTouchPosNow, this.m_eTouchBehNow));
  597. }
  598. flag2 = true;
  599. break;
  600. }
  601. }
  602. if (flag2)
  603. {
  604. break;
  605. }
  606. }
  607. if (flag2)
  608. {
  609. break;
  610. }
  611. }
  612. SceneVRTouch.TouchVoiceScript.TouchBehavior touchBehavior2;
  613. if (this.m_eTouchPosNow != VRTouchMgr.ETouchPos.無し && this.m_TouchMgr.GetBehaviorTouchOrGrab(this.m_eTouchHandNow, this.m_eTouchPosNow, 0) && this.m_dicTouchVoiceScript[this.m_eTouchPosNow].m_listBeh.TryGetValue(this.m_eTouchBehNow, out touchBehavior2))
  614. {
  615. int num = (int)this.m_fKouhunNow;
  616. SceneVRTouch.TouchVoiceScript.TouchOrder touchOrder = null;
  617. try
  618. {
  619. touchOrder = touchBehavior2.m_dicOrderNo[this.m_nOrderNoNow];
  620. }
  621. catch
  622. {
  623. Debug.LogError(string.Concat(new object[]
  624. {
  625. "発生順オーバー:",
  626. this.m_nOrderNoNow,
  627. "/",
  628. touchBehavior2.nOrderNoMax,
  629. ":",
  630. this.m_eTouchPosNow,
  631. ":",
  632. this.m_eTouchBehNow
  633. }));
  634. }
  635. if (this.m_fKouhunNow <= (float)touchOrder.m_nLimit)
  636. {
  637. this.m_fKouhunNow += Time.deltaTime / (float)touchOrder.m_nTime;
  638. if ((float)touchOrder.m_nLimit < this.m_fKouhunNow)
  639. {
  640. this.m_fKouhunNow = (float)touchOrder.m_nLimit;
  641. }
  642. flag = true;
  643. }
  644. if (num < (int)this.m_fKouhunNow)
  645. {
  646. this.m_nOrderNoNow++;
  647. if (touchBehavior2.nOrderNoMax < this.m_nOrderNoNow)
  648. {
  649. this.m_nOrderNoNow = touchBehavior2.nOrderNoMax;
  650. }
  651. Debug.Log("興奮度UP:" + this.m_nOrderNoNow);
  652. this.PlayVoice_First(touchBehavior2.m_dicOrderNo[this.m_nOrderNoNow], true, false);
  653. }
  654. eTouchHandNow = this.m_eTouchHandNow;
  655. etouchPos = this.m_eTouchPosNow;
  656. eTouchBehNow = this.m_eTouchBehNow;
  657. }
  658. SceneVRTouch.TouchVoiceScript.TouchBehavior touchBehavior3;
  659. if (!flag && this.m_dicTouchVoiceScript[VRTouchMgr.ETouchPos.無し].m_listBeh.TryGetValue(VRTouchMgr.ETouchBehavior.無し, out touchBehavior3))
  660. {
  661. this.m_fKouhunNow += Time.deltaTime / (float)touchBehavior3.m_dicOrderNo[0].m_nTime;
  662. if (this.m_fKouhunNow <= 0f)
  663. {
  664. this.m_fKouhunNow = 0f;
  665. }
  666. if (0f < this.m_fKouhunBefore && this.m_fKouhunNow <= 0f)
  667. {
  668. this.PlayVoice_First(touchBehavior3.m_dicOrderNo[0], true, false);
  669. this.PlayMotionScript(this.m_MotionScriptNow.m_strNeutralScript);
  670. }
  671. }
  672. if (etouchPos == VRTouchMgr.ETouchPos.無し)
  673. {
  674. this.PlayVoice_After();
  675. }
  676. this.m_fKouhunBefore = this.m_fKouhunNow;
  677. this.m_eTouchHandNow = eTouchHandNow;
  678. this.m_eTouchPosNow = etouchPos;
  679. this.m_eTouchBehNow = eTouchBehNow;
  680. this.m_TouchMgr.FrameEnd();
  681. if (GameMain.Instance.ScriptMgr.is_motion_all_prop_seq)
  682. {
  683. GameMain.Instance.ScriptMgr.motion_all_prop_seq_maid.AllProcPropSeqStart();
  684. GameMain.Instance.ScriptMgr.motion_all_prop_seq_maid = null;
  685. GameMain.Instance.ScriptMgr.is_motion_all_prop_seq = false;
  686. }
  687. this.m_MotionScriptMgr.Update();
  688. }
  689. private List<SceneVRTouch.BGInfo> m_lstBgInfo;
  690. private string[] m_strConditionNameTbl = new string[]
  691. {
  692. "無し",
  693. "緊張",
  694. "お近づき",
  695. "信頼",
  696. "恋人",
  697. "愛奴"
  698. };
  699. private Dictionary<VRTouchMgr.ETouchPos, SceneVRTouch.TouchVoiceScript> m_dicTouchVoiceScript;
  700. private List<SceneVRTouch.TouchMotionScript> m_listTouchMotionScript;
  701. private Maid m_maid;
  702. private Vector3 m_vCamResetTargetPos;
  703. private Vector2 m_vCamResetAngle;
  704. private float m_fCamResetDistance;
  705. private VRTouchMgr m_TouchMgr;
  706. private VRTouchKagManager m_kag;
  707. [SerializeField]
  708. private VRTouchMgr.EHand m_eTouchHandNow = VRTouchMgr.EHand.Non;
  709. [SerializeField]
  710. private VRTouchMgr.ETouchPos m_eTouchPosNow;
  711. [SerializeField]
  712. private VRTouchMgr.ETouchBehavior m_eTouchBehNow;
  713. [SerializeField]
  714. private int m_nOrderNoNow;
  715. [SerializeField]
  716. private float m_fKouhunNow;
  717. private float m_fKouhunBefore;
  718. private SceneVRTouch.BGInfo m_BGInfoNow;
  719. private SceneVRTouch.TouchMotionScript m_MotionScriptNow;
  720. private string m_strScriptArgLabelEnd;
  721. private string m_strScriptArgLabelFT;
  722. public List<SceneEdit.PVBInfo> m_listPose = new List<SceneEdit.PVBInfo>();
  723. public List<SceneEdit.PVBInfo> m_listBg = new List<SceneEdit.PVBInfo>();
  724. private UIButton m_btnEnd;
  725. private ScriptManagerFast m_MotionScriptMgr;
  726. private Coroutine m_coVoicePlayBraeth;
  727. private bool m_bVoiceAfter;
  728. private bool m_bNowPlayFirst;
  729. private bool m_bSkippedPlayFirst;
  730. public class RandVoiceList
  731. {
  732. public void AddSet(string f_strVoiceFileName, string f_strFace, string f_strFaceBlend)
  733. {
  734. this.m_listVoiceFace.Add(new SceneVRTouch.RandVoiceList.Set(f_strVoiceFileName + ".ogg", f_strFace, f_strFaceBlend));
  735. }
  736. private void Shuffle()
  737. {
  738. System.Random random = new System.Random();
  739. List<SceneVRTouch.RandVoiceList.Set> listVoiceFace = this.m_listVoiceFace;
  740. int i = listVoiceFace.Count;
  741. while (i > 1)
  742. {
  743. i--;
  744. int index = random.Next(i + 1);
  745. SceneVRTouch.RandVoiceList.Set value = listVoiceFace[index];
  746. listVoiceFace[index] = listVoiceFace[i];
  747. listVoiceFace[i] = value;
  748. }
  749. }
  750. public SceneVRTouch.RandVoiceList.Set GetVoiceFace()
  751. {
  752. if (this.m_nNow == 0)
  753. {
  754. this.Shuffle();
  755. }
  756. SceneVRTouch.RandVoiceList.Set result = this.m_listVoiceFace[this.m_nNow];
  757. if (this.m_listVoiceFace.Count <= this.m_nNow)
  758. {
  759. this.m_nNow = 0;
  760. }
  761. return result;
  762. }
  763. private List<SceneVRTouch.RandVoiceList.Set> m_listVoiceFace = new List<SceneVRTouch.RandVoiceList.Set>();
  764. private int m_nNow;
  765. public class Set
  766. {
  767. public Set(string f_strVoiceFileName, string f_strFace, string f_strFaceBlend)
  768. {
  769. this.m_strVoiceFileName = f_strVoiceFileName;
  770. this.m_strFace = f_strFace;
  771. this.m_strFaceBlend = f_strFaceBlend;
  772. }
  773. public string m_strVoiceFileName;
  774. public string m_strFace;
  775. public string m_strFaceBlend;
  776. }
  777. }
  778. private class BGInfo
  779. {
  780. public int nID;
  781. public string strThumbFileName;
  782. public string strName;
  783. public string strScriptTagFT;
  784. public string strFileName;
  785. public string strBGM;
  786. public string strCondition;
  787. public Vector3 vPos;
  788. public float fRot;
  789. public string strValidPack;
  790. public Texture2D texThumb;
  791. }
  792. private class TouchVoiceScript
  793. {
  794. public Dictionary<VRTouchMgr.ETouchBehavior, SceneVRTouch.TouchVoiceScript.TouchBehavior> m_listBeh = new Dictionary<VRTouchMgr.ETouchBehavior, SceneVRTouch.TouchVoiceScript.TouchBehavior>();
  795. public class Waist
  796. {
  797. public void SetRandVoiceListFirst(Dictionary<int, SceneVRTouch.RandVoiceList> f_dicRandVoiceList)
  798. {
  799. this.m_dicRandVoiceFirst = f_dicRandVoiceList;
  800. }
  801. public void SetRandVoiceListBreath(Dictionary<int, SceneVRTouch.RandVoiceList> f_dicRandVoiceList)
  802. {
  803. this.m_dicRandVoiceBreath = f_dicRandVoiceList;
  804. }
  805. public void SetRandVoiceListAfter(Dictionary<int, SceneVRTouch.RandVoiceList> f_dicRandVoiceList)
  806. {
  807. this.m_dicRandVoiceAfter = f_dicRandVoiceList;
  808. }
  809. public SceneVRTouch.RandVoiceList GetRandVoiceListFirst(int f_nKouhun)
  810. {
  811. return this.m_dicRandVoiceFirst[f_nKouhun];
  812. }
  813. public SceneVRTouch.RandVoiceList GetRandVoiceListBreath(int f_nKouhun)
  814. {
  815. return this.m_dicRandVoiceBreath[f_nKouhun];
  816. }
  817. public SceneVRTouch.RandVoiceList GetRandVoiceListAfter(int f_nKouhun)
  818. {
  819. return this.m_dicRandVoiceAfter[f_nKouhun];
  820. }
  821. public int nWaistLower;
  822. public int nWaistUpper = 999;
  823. public string strScriptFirst;
  824. public string strScriptBreath;
  825. public string strScriptAfter;
  826. private Dictionary<int, SceneVRTouch.RandVoiceList> m_dicRandVoiceFirst = new Dictionary<int, SceneVRTouch.RandVoiceList>();
  827. private Dictionary<int, SceneVRTouch.RandVoiceList> m_dicRandVoiceBreath = new Dictionary<int, SceneVRTouch.RandVoiceList>();
  828. private Dictionary<int, SceneVRTouch.RandVoiceList> m_dicRandVoiceAfter = new Dictionary<int, SceneVRTouch.RandVoiceList>();
  829. }
  830. public class Cup
  831. {
  832. public SceneVRTouch.TouchVoiceScript.Waist FindWaistRange(int nMin, int nMax)
  833. {
  834. return this.m_listWaist.Find((SceneVRTouch.TouchVoiceScript.Waist a) => a.nWaistLower == nMin && a.nWaistUpper == nMax);
  835. }
  836. public SceneVRTouch.TouchVoiceScript.Waist FindWaistValue(int nValue)
  837. {
  838. return this.m_listWaist.Find((SceneVRTouch.TouchVoiceScript.Waist a) => a.nWaistLower <= nValue && nValue <= a.nWaistUpper);
  839. }
  840. public SceneVRTouch.TouchVoiceScript.Waist GetWaist(Maid f_maid)
  841. {
  842. SceneVRTouch.TouchVoiceScript.Waist waist = this.FindWaistValue(f_maid.status.body.waist);
  843. NDebug.Assert(waist != null, "ウェスト条件に合うボイススクリプトがありません。");
  844. return waist;
  845. }
  846. public int nCupLower;
  847. public int nCupUpper = 9;
  848. public List<SceneVRTouch.TouchVoiceScript.Waist> m_listWaist = new List<SceneVRTouch.TouchVoiceScript.Waist>();
  849. }
  850. public class TouchCondition
  851. {
  852. public SceneVRTouch.TouchVoiceScript.Cup FindCupRange(int nMin, int nMax)
  853. {
  854. return this.m_listCup.Find((SceneVRTouch.TouchVoiceScript.Cup a) => a.nCupLower == nMin && a.nCupUpper == nMax);
  855. }
  856. public SceneVRTouch.TouchVoiceScript.Cup FindCupValue(int nValue)
  857. {
  858. return this.m_listCup.Find((SceneVRTouch.TouchVoiceScript.Cup a) => a.nCupLower <= nValue && nValue <= a.nCupUpper);
  859. }
  860. public SceneVRTouch.TouchVoiceScript.Cup GetCup(Maid f_maid)
  861. {
  862. SceneVRTouch.TouchVoiceScript.Cup cup = this.FindCupValue((int)(f_maid.status.body.cup[0] - 'A'));
  863. NDebug.Assert(cup != null, "カップ条件に合うボイススクリプトがありません。");
  864. return cup;
  865. }
  866. public Relation eRelation;
  867. public List<SceneVRTouch.TouchVoiceScript.Cup> m_listCup = new List<SceneVRTouch.TouchVoiceScript.Cup>();
  868. }
  869. public class TouchOrder
  870. {
  871. public SceneVRTouch.TouchVoiceScript.TouchCondition GetTouchCondition(Maid f_maid)
  872. {
  873. return this.m_dicCondition[f_maid.status.relation];
  874. }
  875. public int m_nLimit;
  876. public int m_nTime;
  877. public Dictionary<Relation, SceneVRTouch.TouchVoiceScript.TouchCondition> m_dicCondition = new Dictionary<Relation, SceneVRTouch.TouchVoiceScript.TouchCondition>();
  878. }
  879. public class TouchBehavior
  880. {
  881. public int nOrderNoMax;
  882. public Dictionary<int, SceneVRTouch.TouchVoiceScript.TouchOrder> m_dicOrderNo = new Dictionary<int, SceneVRTouch.TouchVoiceScript.TouchOrder>();
  883. }
  884. }
  885. private class TouchMotionScript
  886. {
  887. public void AddScript(VRTouchMgr.ETouchPos f_pos, VRTouchMgr.ETouchBehavior f_beh, string f_strScript)
  888. {
  889. Dictionary<VRTouchMgr.ETouchBehavior, string> dictionary;
  890. if (!this.m_dicTouchScript.TryGetValue(f_pos, out dictionary))
  891. {
  892. dictionary = new Dictionary<VRTouchMgr.ETouchBehavior, string>();
  893. this.m_dicTouchScript.Add(f_pos, dictionary);
  894. }
  895. dictionary.Add(f_beh, f_strScript);
  896. }
  897. public string GetScript(VRTouchMgr.ETouchPos f_pos, VRTouchMgr.ETouchBehavior f_beh)
  898. {
  899. return this.m_dicTouchScript[f_pos][f_beh];
  900. }
  901. public string GetScriptNeutral()
  902. {
  903. return this.m_strNeutralScript;
  904. }
  905. public int m_nId;
  906. public string m_strThumb;
  907. public string m_strFTScript;
  908. public string m_strNeutralScript;
  909. public Texture2D m_texThumb;
  910. public Dictionary<VRTouchMgr.ETouchPos, Dictionary<VRTouchMgr.ETouchBehavior, string>> m_dicTouchScript = new Dictionary<VRTouchMgr.ETouchPos, Dictionary<VRTouchMgr.ETouchBehavior, string>>();
  911. }
  912. private class ButtonPose : SceneEdit.PVBInfo
  913. {
  914. public SceneVRTouch.TouchMotionScript m_motion;
  915. }
  916. private class ButtonBG : SceneEdit.PVBInfo
  917. {
  918. public SceneVRTouch.BGInfo m_bg;
  919. }
  920. }