public void GeoDetach(Boolean restorePosAndScale) { FieldMapActorController component = base.GetComponent <FieldMapActorController>(); component.SetActive(true); if (this._geoAttachData.parentActor != (UnityEngine.Object)null) { base.transform.parent = this._geoAttachData.parentActor.transform.parent; } this.actor.go.transform.localRotation = Quaternion.AngleAxis(this.actor.rotAngle[2], Vector3.back) * Quaternion.AngleAxis(this.actor.rotAngle[1], Vector3.up) * Quaternion.AngleAxis(this.actor.rotAngle[0], Vector3.left); if (restorePosAndScale) { component.curPos = component.curPosBeforeAttach; base.transform.localPosition = component.curPos; base.transform.localScale = component.localScaleBeforeAttach; } else { base.transform.localScale = new Vector3(-1f, -1f, 1f); } this._geoAttachData.parentActor = (FieldMapActor)null; this._geoAttachData.parentNode = (Transform)null; if (FF9StateSystem.Common.FF9.fldMapNo == 3002 && component.originalActor.sid == 2 && component.originalActor.anim == 11022) { HonoBehaviorSystem.ExtraLoopCount = 1; } }
public void Update() { if (!this.firstTime) { return; } this.firstTime = false; FieldMap component = GameObject.Find("FieldMap").GetComponent <FieldMap>(); component.AddPlayer(); Actor actor = new Actor(); actor.idle = 200; actor.walk = 190; actor.run = 38; actor.turnl = 187; actor.turnr = 193; GameObject gameObject = GameObject.Find("Player"); FieldMapActorController component2 = gameObject.GetComponent <FieldMapActorController>(); AnimationFactory.AddAnimWithAnimatioName(gameObject, FF9DBAll.AnimationDB.GetValue((Int32)actor.idle)); AnimationFactory.AddAnimWithAnimatioName(gameObject, FF9DBAll.AnimationDB.GetValue((Int32)actor.walk)); AnimationFactory.AddAnimWithAnimatioName(gameObject, FF9DBAll.AnimationDB.GetValue((Int32)actor.run)); AnimationFactory.AddAnimWithAnimatioName(gameObject, FF9DBAll.AnimationDB.GetValue((Int32)actor.turnl)); AnimationFactory.AddAnimWithAnimatioName(gameObject, FF9DBAll.AnimationDB.GetValue((Int32)actor.turnr)); gameObject.GetComponent <Animation>().Play(FF9DBAll.AnimationDB.GetValue((Int32)actor.idle)); component2.originalActor = actor; }
public void GeoAttach(FieldMapActor parentActor, Transform parentNode) { Transform childByName = base.transform.GetChildByName("bone000"); if (childByName == (UnityEngine.Object)null) { return; } FieldMapActorController component = base.GetComponent <FieldMapActorController>(); component.curPosBeforeAttach = component.curPos; component.localScaleBeforeAttach = base.transform.localScale; Vector3 curPos = component.curPos; component.curPos = Vector3.zero; component.lastPos = Vector3.zero; component.SyncPosToTransform(); component.SetActive(false); if (FF9StateSystem.Common.FF9.fldMapNo >= 1400 && FF9StateSystem.Common.FF9.fldMapNo <= 1425) { if (FF9StateSystem.Common.FF9.fldMapNo == 1412) { if (component.isPlayer) { component.curPos = curPos; } } else if (FF9StateSystem.Common.FF9.fldMapNo != 1410 && component.isPlayer) { component.curPos = parentNode.position; } } this._geoAttachData.parentActor = parentActor; this._geoAttachData.parentNode = parentNode; this._geoAttachData.childNode = childByName; Vector3 attachOffset = this._geoAttachData.attachOffset; bool flag = FF9StateSystem.Common.FF9.fldMapNo == 2954 && PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(EBin.MAP_INDEX_SVR) == 8; this._geoAttachData.attachOffset = parentActor._geoAttachData.attachOffset; if (flag) { this._geoAttachData.attachOffset = new Vector3(30f, 150f, 0f); } base.transform.parent = parentNode.transform; base.transform.localPosition = this._geoAttachData.attachOffset; base.transform.localRotation = Quaternion.identity; base.transform.localScale = Vector3.one; this._geoAttachData.childNode.localPosition = Vector3.zero; this._geoAttachData.childNode.localRotation = Quaternion.identity; this._geoAttachData.childNode.localScale = Vector3.one; }
public void OnGUI() { try { if (_obj == null) { return; } if (_controler == null) { _controler = FindObjectOfType <FieldMapActorController>(); if (_controler == null) { return; } } Vector3 a = _obj.transform.position; Camera mainCamera = _controler.fieldMap.GetMainCamera(); BGCAM_DEF currentBgCamera = _controler.fieldMap.GetCurrentBgCamera(); Vector3 position = PSX.CalculateGTE_RTPT(a + new Vector3(0f, 0, 0f), Matrix4x4.identity, currentBgCamera.GetMatrixRT(), currentBgCamera.GetViewDistance(), _controler.fieldMap.GetProjectionOffset()); position = mainCamera.WorldToScreenPoint(position); position.y = (Single)Screen.height - position.y; Int32 targetMarkSize = 40; Rect position2 = new Rect(position.x - targetMarkSize / 2f, position.y - targetMarkSize, targetMarkSize, targetMarkSize); GUI.Label(position2, _obj.name); Component[] components = _obj.GetComponents <Component>(); Log.Message(_obj.name); foreach (Component cmp in components) { Log.Message(cmp.name + '_' + cmp.GetType()); } for (Int32 i = 0; i < _obj.transform.childCount; i++) { GameObject child = _obj.GetChild(i); Log.Message("child: " + child.name); } } catch (Exception ex) { Log.Error(ex); } }
private void Update() { try { if (!_eventObject.IsEnabled()) { _position = Vector3.zero; return; } if (_actorControler == null) { _actorControler = gameObject.GetComponent <FieldMapActorController>(); if (_actorControler == null) { return; } if (!_actorControler.IsActive()) { return; } } Camera mainCamera = _actorControler.fieldMap.GetMainCamera(); BGCAM_DEF currentBgCamera = _actorControler.fieldMap.GetCurrentBgCamera(); Vector3 position = PSX.CalculateGTE_RTPT( this.gameObject.transform.position, Matrix4x4.identity, currentBgCamera.GetMatrixRT(), currentBgCamera.GetViewDistance(), _actorControler.fieldMap.GetProjectionOffset()); position = mainCamera.WorldToScreenPoint(position); position.y = Screen.height - position.y; _position = position; } catch (Exception ex) { Log.Error(ex, "Failed to update {0}", this); _position = Vector3.zero; } }
public void BackupPosObjData() { for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj obj = objList.obj; if (this.isPosObj(obj) && (Object)obj.go) { FieldMapActorController component = obj.go.GetComponent <FieldMapActorController>(); ((PosObj)obj).posField = component.curPos; ((PosObj)obj).rotField = obj.go.transform.localRotation; ((PosObj)obj).charFlags = (Int16)component.charFlags; ((PosObj)obj).activeTri = (Int16)component.activeTri; ((PosObj)obj).activeFloor = (Byte)component.activeFloor; ((PosObj)obj).bgiRad = (Byte)(component.radius / 4.0); this.fieldmap.isBattleBackupPos = true; } } }
public ObjList DisposeObj(Obj obj) { ObjList objList1 = null; ObjList objList2 = null; ObjList objList3; for (objList3 = this._context.activeObj; objList3 != null && objList3.obj != obj; objList3 = objList3.next) { objList2 = objList3; } if (obj.cid == 4) { FieldMapActorController mapActorController = ((Actor)obj).fieldMapActorController; mapActorController?.UnregisterHonoBehavior(true); FieldMapActor fieldMapActor = ((Actor)obj).fieldMapActor; if (fieldMapActor != null) { fieldMapActor.DestroySelfShadow(); fieldMapActor.UnregisterHonoBehavior(true); } } if (objList3 != null) { objList1 = objList3.next; if (objList2 != null) { objList2.next = objList1; } if (this._context.activeObjTail == objList3) { this._context.activeObjTail = objList2; } objList3.next = this._context.freeObj; this._context.freeObj = objList3; DeallocObj(obj); if (this._context.controlUID == objList3.obj.uid) { this._context.controlUID = 0; } } return(objList1); }
private void SetActorRadius(Actor actor) { if (_engine.gMode != 1) { return; } FieldMapActorController fieldMapActorController = actor.go.GetComponent <FieldMapActorController>(); if (fieldMapActorController != null) { fieldMapActorController.radius = 20 * 4; } FieldMapActor fieldMapActor = actor.go.GetComponent <FieldMapActor>(); if (fieldMapActor != null) { fieldMapActor.CharRadius = 20 * 4; } }
public static Obj Collision(EventEngine eventEngine, PosObj po, Int32 mode, ref Single distance) { Obj result = (Obj)null; Single num = Single.MaxValue; Boolean flag = (mode & 4) > 0; Int32 num2 = (Int32)(4 * (Byte)((!flag) ? po.collRad : po.talkRad)); Vector3 a = Vector3.zero; if (eventEngine.gMode != 1) { if (eventEngine.gMode == 3) { WMActor wmActor = ((Actor)po).wmActor; a = wmActor.RealPosition; } for (ObjList objList = eventEngine.GetActiveObjList(); objList != null; objList = objList.next) { Obj obj = objList.obj; if (obj.sid != 5 || eventEngine.gMode == 3) { } Byte b = (Byte)((obj.uid != eventEngine.GetControlUID()) ? 4 : 2); Boolean flag2 = (po.flags & b) > 0; Single num3 = (Single)((!flag && !flag2) ? 0 : 1); Byte b2 = (Byte)((!flag) ? ((Byte)((po.uid != eventEngine.GetControlUID()) ? 4 : 2)) : 8); Single num4 = (Single)(obj.flags & b2); if (obj != po) { Boolean flag3 = num3 <= 0f; Boolean flag4 = num4 <= 0f; if (flag3 || flag4) { flag3 = ((mode & 6) <= 0); flag4 = (eventEngine.GetIP((Int32)obj.sid, (Int32)((!flag) ? 2 : 3), obj.ebData) != eventEngine.nil); if ((flag3 || flag4) && obj.cid == 4) { Actor actor = (Actor)obj; Single num5 = 0f; Int32 num6 = (Int32)(4 * (Byte)((!flag) ? actor.collRad : actor.talkRad)); PosObj posObj = (PosObj)obj; if (posObj.ovalRatio > 0) { num6 = EventCollision.CalculateRadiusFromOvalRatio(po, posObj, num6); } num6 += num2; if ((mode & 6) != 0) { num6 += (Int32)(actor.speed + 60); } if (eventEngine.gMode == 3) { Single num7 = Vector3.Distance(a, actor.wmActor.RealPosition); Single num8 = num7 * 256f; num5 = num8; } if ((Single)num6 > num5 && num > num5) { result = actor; num = num5; } } } } } if (distance > 0f) { distance = num; } return(result); } FieldMapActorController component = po.go.GetComponent <FieldMapActorController>(); if (component == (UnityEngine.Object)null) { return((Obj)null); } return(component.walkMesh.Collision(component, mode, out distance)); }
private bool MoveToward_mixed(float x, float y, float z, int flags, PosObj flagsPosObj) { Actor actor = (Actor)this.gCur; if (FF9StateSystem.Common.FF9.fldMapNo == 1823 && actor.sid == 13 && (int)x == -365 && (int)z == -373) { x = -389f; z = -600f; } if (FF9StateSystem.Common.FF9.fldMapNo == 1550 && actor.sid == 15 && (int)x == -1109 && (int)z == -1014) { x = -1155f; z = -1070f; } GameObject go = this.gCur.go; float num = (float)actor.speed; float num2 = 0f; PosObj posObj = (PosObj)null; FieldMapActorController fieldMapActorController = (FieldMapActorController)null; WMActor wmactor = (WMActor)null; float num3 = 0f; float num4 = 0f; float num5 = 0f; Vector3 vector = Vector3.zero; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if (fieldMapActorController == (UnityEngine.Object)null) { num3 = actor.pos[0]; num4 = actor.pos[1]; num5 = actor.pos[2]; } else { num3 = fieldMapActorController.curPos.x; num4 = fieldMapActorController.curPos.y; num5 = fieldMapActorController.curPos.z; } vector = actor.rotAngle; } else if (this.gMode == 3) { wmactor = actor.wmActor; num3 = actor.pos[0]; num4 = actor.pos[1]; num5 = actor.pos[2]; } float deltaX = x - num3; float num6 = y - num4; float deltaZ = z - num5; float num7; if (((int)actor.actf & EventEngine.actLockDir) != 0) { num7 = ((this.gMode != 1) ? wmactor.rot1 : vector.y); num7 = EventEngineUtils.ClampAngle(num7); } else { num7 = this.eBin.angleAsm(deltaX, deltaZ); if ((flags & 1) == 0 || flagsPosObj != null) { float num8 = (this.gMode != 1) ? wmactor.rot1 : vector.y; num8 = EventEngineUtils.ClampAngle(num8); float num9 = num7 - num8; if (num9 < -180f) { num9 += 360f; } if (num9 > 180f || EventEngineUtils.nearlyEqual(num9, 180f)) { num9 -= 360f; } if ((FF9StateSystem.Common.FF9.fldMapNo != 307 || this.gCur.sid != 11) && (FF9StateSystem.Common.FF9.fldMapNo != 610 || this.gCur.sid != 3) && EventEngineUtils.nearlyEqual(num9, 0f)) { Actor actor2 = actor; actor2.actf = (ushort)(actor2.actf | (ushort)EventEngine.actLockDir); } int num10 = (int)actor.omega << 3; float num11 = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)num10); if (num9 > 0f) { if (num9 > num11) { num7 = num8 + num11; } } else if (num9 < -num11) { num7 = num8 - num11; } num7 = EventEngineUtils.ClampAngle(num7); if (this.gMode == 1) { vector.y = num7; actor.rotAngle[1] = num7; } else if (this.gMode == 3) { wmactor.rot1 = num7; } } } float num13; if ((flags & 2) != 0 && flagsPosObj == null) { num6 = y - num4; float num12 = this.distance(deltaX, 0f, deltaZ); num13 = this.eBin.angleAsm(-num6, -num12); num13 = EventEngineUtils.ClampAngle(num13); float num8 = actor.rot0; num8 = EventEngineUtils.ClampAngle(num8); float num9 = num13 - num8; if (num9 < -180f) { num9 += 360f; } else if (num9 > 180f || EventEngineUtils.nearlyEqual(num9, 180f)) { num9 -= 360f; } int num10 = (int)actor.omega << 3; float num14 = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)num10); if (num9 > 0f) { if (num9 > num14) { num13 = num8 + num14; } } else if (num9 < -num14) { num13 = num8 - num14; } num13 = EventEngineUtils.ClampAngle(num13); actor.rot0 = num13; } else { num13 = 0f; num6 = 0f; } Vector3 vector2; EventEngine.GetMoveVector(out vector2, num13, num7, (float)actor.speed); if (fieldMapActorController != (UnityEngine.Object)null && fieldMapActorController.name == fieldMapActorController.fieldMap.debugObjName) { Vector3 a = new Vector3(num3, num4, num5); Vector3 vector3 = vector2; Vector3 b = vector3.normalized * 100f * vector3.magnitude; Vector3 b2 = new Vector3(0f, 100f, 0f); Vector3 vector4 = new Vector3(x, y, z); global::Debug.DrawLine(a + b2, a + b + b2, Color.magenta, 2f, true); global::Debug.DrawLine(a + b2, a + Vector3.up * 50f + b2, Color.blue, 2f, true); } Vector3 vector5 = new Vector3(num3, num4, num5) + vector2; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if (fieldMapActorController == (UnityEngine.Object)null) { actor.pos[0] = vector5.x; actor.pos[1] = vector5.y; actor.pos[2] = vector5.z; } else { fieldMapActorController.curPos += vector2; fieldMapActorController.SyncPosToTransform(); } } else if (this.gMode == 3) { wmactor.SetPosition(vector5.x, vector5.y, vector5.z); } if (this.gMode == 1 && fieldMapActorController != (UnityEngine.Object)null) { if (fieldMapActorController.originalActor.uid == 2 && FF9StateSystem.Common.FF9.fldMapNo == 1605 && this.eBin.getVarManually(220) == 6622) { fieldMapActorController.originalActor.collRad = 10; } if (fieldMapActorController.originalActor.uid == 18 && FF9StateSystem.Common.FF9.fldMapNo == 575 && this.eBin.getVarManually(220) == 3165) { fieldMapActorController.originalActor.collRad = 34; } posObj = fieldMapActorController.walkMesh.Collision(fieldMapActorController, 0, out num2); if (posObj != null && (num2 < 0f || EventEngineUtils.nearlyEqual(num2, 0f))) { fieldMapActorController.curPos -= vector2; } } else if (this.gMode == 3) { posObj = (PosObj)this.Collision(this, actor, 0, ref num2); if (posObj != null && (num2 < 0f || EventEngineUtils.nearlyEqual(num2, 0f))) { wmactor.SetPosition(num3, num4, num5); } actor.pos[0] = vector5[0]; actor.pos[1] = vector5[1]; actor.pos[2] = vector5[2]; } if (actor.loopCount != 0 && actor.loopCount != 255) { Actor actor3 = actor; actor3.loopCount = (byte)(actor3.loopCount - 1); } bool flag = actor.loopCount != 0; if (flagsPosObj != null) { bool flag2 = posObj != flagsPosObj; bool flag3 = num2 > 0f; flag = (flag2 || flag3); } num2 = this.dist64(deltaX, num6, deltaZ); bool flag4 = num2 > actor.lastdist; if (FF9StateSystem.Common.FF9.fldMapNo == 456 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 2) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } } else if (FF9StateSystem.Common.FF9.fldMapNo == 455 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 1) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1055 && actor.sid == 11) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } if (num2 < num * num || (((int)actor.actf & EventEngine.actMove) != 0 && flag4)) { if (num2 < num * num && FF9StateSystem.Common.FF9.fldMapNo != 2204 && (FF9StateSystem.Common.FF9.fldMapNo != 2209 || PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(220) != 9850) && this.gMode == 1 && fieldMapActorController != (UnityEngine.Object)null) { fieldMapActorController.curPos.x = x; fieldMapActorController.curPos.z = z; fieldMapActorController.SyncPosToTransform(); } flag = false; } bool flag5 = false; if (FF9StateSystem.Common.FF9.fldMapNo == 901) { if (actor.sid == 1) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1808) { if (actor.sid == 4 || actor.sid == 5) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1810) { if (actor.sid == 5) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 456 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 2) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 455 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 1) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1055 && actor.sid == 11) { flag5 = true; } if (flag5 && flag4 && posObj != null && posObj.uid == this.GetControlUID()) { flag = true; } if (actor.lastdist < (float)EventEngine.kInitialDist && num2 < actor.lastdist) { Actor actor4 = actor; actor4.actf = (ushort)(actor4.actf | (ushort)EventEngine.actMove); } if (FF9StateSystem.Common.FF9.fldMapNo == 571 && actor.sid == 4 && EventEngineUtils.nearlyEqual(x, 887f) && EventEngineUtils.nearlyEqual(z, 1419f) && num2 > actor.lastdist) { fieldMapActorController.curPos.x = 887f; fieldMapActorController.curPos.z = 1419f; fieldMapActorController.SyncPosToTransform(); return(true); } actor.lastdist = num2; if (FF9StateSystem.Common.FF9.fldMapNo == 2954 && actor.sid == 11 && EventEngineUtils.nearlyEqual(num2, 32420f)) { return(false); } if (!flag) { this.clrdist(actor); } if (actor.uid == this._context.controlUID) { this.gAnimCount++; } return(flag); }
public Int32 ProcessEvents() { if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 303 || (Int32)FF9StateSystem.Common.FF9.fldMapNo == 304) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(53189, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52933, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52677, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 301) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(61381, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(61125, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 302) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(53189, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52933, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 2921 && FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(10461, 10); } Boolean flag = false; Boolean isBattle = this.gMode == 2; this._moveKey = false; for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj obj = objList.obj; if ((Int32)obj.cid == 4) { Actor actor = (Actor)obj; FieldMapActorController mapActorController = actor.fieldMapActorController; if ((Int32)obj.uid == (Int32)this._context.controlUID && (Int32)obj.state == (Int32)EventEngine.stateRunning) { if ((Int32)this._context.usercontrol != 0) { if (this.gMode == 1) { //if (!((UnityEngine.Object)mapActorController != (UnityEngine.Object)null)) // ; this._moveKey = FieldMapActorController.ccSMoveKey; } else if (this.gMode == 3) { Single distance = 0.0f; this._moveKey = ff9.w_frameEncountEnable; this.CollisionRequest((PosObj)obj); PosObj posObj = (PosObj)this.Collision(this, actor, 0, ref distance); if (posObj != null && distance <= 0f) { WMActor wmActor = actor.wmActor; WMActor wmActor2 = ((Actor)posObj).wmActor; Vector2 from = new Vector2(wmActor.pos0 - wmActor.lastx, wmActor.pos2 - wmActor.lastz); Vector2 to = new Vector2(wmActor2.pos0 - wmActor.pos0, wmActor2.pos2 - wmActor.pos2); float num2 = Vector2.Angle(from, to); if (num2 >= 0f && num2 <= 90f) { wmActor.transform.position = new Vector3(wmActor.lastx, wmActor.lasty, wmActor.lastz); } } } if (this._moveKey) { this.ResetIdleTimer(0); } } else if ((UnityEngine.Object)mapActorController != (UnityEngine.Object)null) { mapActorController.CopyLastPos(); } } else if ((UnityEngine.Object)mapActorController != (UnityEngine.Object)null) { mapActorController.CopyLastPos(); } if ((Int32)obj.state == (Int32)EventEngine.stateRunning) { if (!isBattle) { this.ProcessAnime((Actor)obj); } //if ((Int32)this._context.usercontrol == 0) // ; } } } if (isBattle) { this.SetupBattleState(); } this._posUsed = false; Int32 num1 = this.eBin.ProcessCode(this._context.activeObj); EventHUD.CheckUIMiniGameForMobile(); if (num1 == 6) { num1 = 0; } else { this.gStopObj = (ObjList)null; } this._aimObj = (PosObj)null; this._eyeObj = (PosObj)null; for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { this.SetRenderer(objList.obj, isBattle); } //if (this.gMode != 1) // ; if (isBattle) { for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj p = objList.obj; if ((Int32)p.btlchk == 2 && this.Request(p, 3, 5, false)) { p.btlchk = (Byte)1; } } } else { for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj obj = objList.obj; Single deltaX = 0.0f; Single deltaY = 0.0f; Single deltaZ = 0.0f; if ((Int32)obj.cid == 4) { Actor actor = (Actor)obj; if (this.gMode == 1) { if ((UnityEngine.Object)obj.go != (UnityEngine.Object)null) { FieldMapActorController component = obj.go.GetComponent <FieldMapActorController>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null) { Int32 num2 = 0; if ((Int32)actor.cid != 4 || (Int32)actor.model == (Int32)UInt16.MaxValue) { num2 = 0; } //else if (component.walkMesh == null) // ; if (((Int32)obj.uid != (Int32)this._context.controlUID || this.sLockTimer >= 0L) && (num2 & 1) != 0) { Single distance = 0.0f; PosObj posObj = this.fieldmap.walkMesh.Collision(actor.fieldMapActorController, 0, out distance); if (posObj != null) { actor.fieldMapActorController.ResetPos(); if (((Int32)posObj.flags & 16) != 0) { this.sLockTimer = 0L; } if ((Int32)obj.uid == (Int32)this._context.controlUID) { this._collTimer = 2; } } } } } if ((Int32)obj.uid == (Int32)this._context.controlUID) { EIcon.ProcessHereIcon((PosObj)actor); if (this.GetUserControl()) { this.CollisionRequest((PosObj)actor); } } } else if (this.gMode == 3) { if (((Int32)actor.actf & EventEngine.actEye) != 0) { Vector3 eyePtr = ff9.w_cameraGetEyePtr(); eyePtr.x = actor.pos[0]; eyePtr.y = actor.pos[1]; eyePtr.z = actor.pos[2]; ff9.w_cameraSetEyePtr(eyePtr); this._eyeObj = (PosObj)actor; } else if (((Int32)actor.actf & EventEngine.actAim) != 0) { Vector3 aimPtr = ff9.w_cameraGetAimPtr(); aimPtr.x = actor.pos[0]; aimPtr.y = actor.pos[1]; aimPtr.z = actor.pos[2]; ff9.w_cameraSetAimPtr(aimPtr); this._aimObj = (PosObj)actor; } } if ((UnityEngine.Object)obj.go != (UnityEngine.Object)null) { if (this.gMode == 3) { WMActor wmActor = ((Actor)obj).wmActor; if ((UnityEngine.Object)wmActor != (UnityEngine.Object)null) { deltaX = (Single)(256.0 * ((Double)wmActor.pos0 - (Double)wmActor.lastx)); deltaY = (Single)(256.0 * ((Double)wmActor.pos1 - (Double)wmActor.lasty)); deltaZ = (Single)(256.0 * ((Double)wmActor.pos2 - (Double)wmActor.lastz)); flag = !EventEngineUtils.nearlyEqual(wmActor.pos0, wmActor.lastx) || !EventEngineUtils.nearlyEqual(wmActor.pos2, wmActor.lastz); //if ((Int32)obj.sid != 5 && (Int32)obj.sid == 11) // ; } } else if (this.gMode == 1) { FieldMapActorController component = obj.go.GetComponent <FieldMapActorController>(); deltaX = component.curPos.x - component.lastPos.x; deltaY = component.curPos.y - component.lastPos.y; deltaZ = component.curPos.z - component.lastPos.z; flag = !EventEngineUtils.nearlyEqual(component.curPos.x, component.lastPos.x) || !EventEngineUtils.nearlyEqual(component.curPos.z, component.lastPos.z); } if ((Int32)actor.follow != (Int32)Byte.MaxValue && (UnityEngine.Object)Singleton <DialogManager> .Instance.GetDialogByWindowID((Int32)actor.follow) == (UnityEngine.Object)null) { actor.follow = Byte.MaxValue; if (EventEngine.sLastTalker == actor) { EventEngine.sTalkTimer = 30; } } if (this.gMode == 1) { this.ProcessTurn(actor); if ((Int32)actor.model != (Int32)UInt16.MaxValue) { this.ProcessNeck(actor); } } if (this.gMode == 3) { this.ProcessTurn(actor); } if (flag) { Int32 num2 = (Int32)actor.animFlag & (EventEngine.afExec | EventEngine.afLower | EventEngine.afFreeze); if (num2 == 0 || num2 == (EventEngine.afExec | EventEngine.afLower)) { actor.animFlag &= (Byte) ~(EventEngine.afExec | EventEngine.afLower); this.SetAnim(actor, (Int32)actor.speed < (Int32)actor.speedth ? (Int32)actor.walk : (Int32)actor.run); } } else if (((Int32)actor.animFlag & (EventEngine.afExec | EventEngine.afFreeze)) == 0 && (this._collTimer == 0 || (Int32)obj.uid != (Int32)this._context.controlUID)) { this.SetAnim(actor, (Int32)actor.idle); } if (flag && (Int32)obj.uid == (Int32)this._context.controlUID && this._moveKey) { Single distance = this.distance(deltaX, deltaY, deltaZ); if (this.gMode == 3) { WMActor wmActor = ((Actor)obj).wmActor; } this._encountTimer += distance; if (!FF9StateSystem.Settings.IsNoEncounter && this.ProcessEncount(actor)) { this._encountReserved = true; } } } } } } if (this._collTimer > 0) { --this._collTimer; } if (EventEngine.sTalkTimer > 0 && --EventEngine.sTalkTimer != 0) { this.ClearLookTalker(); } if (this._encountReserved && !this._posUsed) { this._encountReserved = false; num1 = 3; } if ((num1 == 3 || num1 == 7) && this.gMode == 1) { this.BackupPosObjData(); } if (num1 == 7) { this.sEventContext1.copy(this.sEventContext0); } EMinigame.AllTreasureAchievement(); EMinigame.AllSandyBeachAchievement(); EMinigame.DigUpKupoAchievement(); //this.printActorsInObjList(this.E.activeObj); return(num1); }
public override void HonoLateUpdate() { if (FF9StateSystem.Common.FF9.fldMapNo == 70) { return; } BGCAM_DEF currentBgCamera = this._fieldMap.GetCurrentBgCamera(); Matrix4x4 cam = FF9StateSystem.Common.FF9.cam; UInt16 proj = FF9StateSystem.Common.FF9.proj; Vector2 projectionOffset = FF9StateSystem.Common.FF9.projectionOffset; Vector3 position = base.transform.position; this.projectedPos = PSX.CalculateGTE_RTPT_POS(position, Matrix4x4.identity, cam, (Single)proj, projectionOffset, true); this.projectedDepth = this.projectedPos.z / 4f + (Single)FF9StateSystem.Field.FF9Field.loc.map.charOTOffset; this.charOTOffset = FF9StateSystem.Field.FF9Field.loc.map.charOTOffset; if (this.projectedDepth < 100f || this.projectedDepth > 3996f) { } Single num = PSX.CalculateGTE_RTPTZ(base.transform.position, Matrix4x4.identity, cam, (Single)proj, projectionOffset) * 1f; Single num2 = num / 4f + (Single)FF9StateSystem.Field.FF9Field.loc.map.charOTOffset; if (this.meshRenderer != null) { if (this.actor != null) { PosObj posObj = this.actor; if (num2 < 100f || num2 > 3996f) { if (FF9StateSystem.Common.FF9.fldMapNo == 1413) { FieldMapActorController component = base.GetComponent <FieldMapActorController>(); if (component.originalActor.sid == 12) { posObj.frontCamera = true; } else { posObj.frontCamera = false; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1414) { FieldMapActorController component2 = base.GetComponent <FieldMapActorController>(); if (component2.originalActor.sid == 16) { posObj.frontCamera = true; } else { posObj.frontCamera = false; } } else if (FF9StateSystem.Common.FF9.fldMapNo != 2752 && FF9StateSystem.Common.FF9.fldMapNo != 1707) { posObj.frontCamera = false; } return; } posObj.frontCamera = true; } Renderer[] array = this.meshRenderer; for (Int32 i = 0; i < (Int32)array.Length; i++) { Renderer renderer = array[i]; if (renderer.enabled) { Single num3; if (MBG.MarkCharacterDepth) { num3 = 8f; } else { num3 = num; } this.charPsxZ = num3; this.charZ = (Single)(((Int32)num3 / 4 + FF9StateSystem.Field.FF9Field.loc.map.charOTOffset) * 1); this.charZ = (Single)(-(Single)((Int32)this.charZ)); if (FF9StateSystem.Common.FF9.fldMapNo == 2510 && this.actor.uid == 8) { renderer.material.SetFloat("_CharZ", 20f); } if (FF9StateSystem.Common.FF9.fldMapNo == 2363 && this.actor.uid == 33) { renderer.material.SetFloat("_CharZ", 20f); } } } } if (this.actor == null) { return; } FF9Shadow ff9Shadow = FF9StateSystem.Field.FF9Field.loc.map.shadowArray[(Int32)this.actor.uid]; Vector3 zero = Vector3.zero; if (FF9StateSystem.Common.FF9.fldMapNo == 661 && this.actor.uid == 3) { zero = new Vector3(-39f, -14f, 80f); } else if (FF9StateSystem.Common.FF9.fldMapNo == 1659 && this.actor.uid == 128) { zero = new Vector3(0f, -66f, 0f); } else if (FF9StateSystem.Common.FF9.fldMapNo == 1659 && this.actor.uid == 129) { zero = new Vector3(0f, -21f, 0f); } else if (FF9StateSystem.Common.FF9.fldMapNo == 2363 && (this.actor.uid == 16 || this.actor.uid == 15 || this.actor.uid == 32 || this.actor.uid == 33)) { zero = new Vector3(0f, -15f, 0f); } Vector3 a = this.GetShadowCurrentPos(); if ((FF9StateSystem.Common.FF9.fldMapNo == 2107 && this.actor.uid == 5) || (FF9StateSystem.Common.FF9.fldMapNo == 2102 && this.actor.uid == 4)) { a = base.transform.position; a.y = 0f; } this.shadowTran.localPosition = a + new Vector3(ff9Shadow.xOffset, this.shadowHeightOffset * 1f, ff9Shadow.zOffset) + zero; Single num4 = PSX.CalculateGTE_RTPTZ(this.shadowTran.position, Matrix4x4.identity, cam, (Single)proj, projectionOffset); num4 = (Single)(((Int32)num4 / 4 + FF9StateSystem.Field.FF9Field.loc.map.charOTOffset) * 1); num4 = (Single)(-(Single)((Int32)num4)); this.shadowZ = (Int32)num4; this.charAbsZ = base.transform.position.z; }
private bool MoveToward_mixed(float x, float y, float z, int flags, PosObj flagsPosObj) { Actor actor = (Actor)this.gCur; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1823 && (int)actor.sid == 13 && ((int)x == -365 && (int)z == -373)) { x = -389f; z = -600f; } if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1550 && (int)actor.sid == 15 && ((int)x == -1109 && (int)z == -1014)) { x = -1155f; z = -1070f; } float num1 = (float)actor.speed; float distance = 0.0f; PosObj posObj = (PosObj)null; FieldMapActorController fieldMapActorController = (FieldMapActorController)null; WMActor wmActor = (WMActor)null; float x1 = 0.0f; float y1 = 0.0f; float z1 = 0.0f; Vector3 vector3_1 = Vector3.zero; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if ((UnityEngine.Object)fieldMapActorController == (UnityEngine.Object)null) { x1 = actor.pos[0]; y1 = actor.pos[1]; z1 = actor.pos[2]; } else { x1 = fieldMapActorController.curPos.x; y1 = fieldMapActorController.curPos.y; z1 = fieldMapActorController.curPos.z; } vector3_1 = actor.rotAngle; } else if (this.gMode == 3) { wmActor = actor.wmActor; x1 = actor.pos[0]; y1 = actor.pos[1]; z1 = actor.pos[2]; } float deltaX = x - x1; float num2 = y - y1; float deltaZ = z - z1; float num3; if (((int)actor.actf & EventEngine.actLockDir) != 0) { num3 = EventEngineUtils.ClampAngle(this.gMode != 1 ? wmActor.rot1 : vector3_1.y); } else { num3 = this.eBin.angleAsm(deltaX, deltaZ); if ((flags & 1) == 0 || flagsPosObj != null) { float num4 = EventEngineUtils.ClampAngle(this.gMode != 1 ? wmActor.rot1 : vector3_1.y); float a = num3 - num4; if ((double)a < -180.0) { a += 360f; } if ((double)a > 180.0 || EventEngineUtils.nearlyEqual(a, 180f)) { a -= 360f; } if (((int)FF9StateSystem.Common.FF9.fldMapNo != 307 || (int)this.gCur.sid != 11) && ((int)FF9StateSystem.Common.FF9.fldMapNo != 610 || (int)this.gCur.sid != 3) && EventEngineUtils.nearlyEqual(a, 0.0f)) { actor.actf |= (ushort)EventEngine.actLockDir; } float withOutShiftRight = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)((int)actor.omega << 3)); if ((double)a > 0.0) { if ((double)a > (double)withOutShiftRight) { num3 = num4 + withOutShiftRight; } } else if ((double)a < -(double)withOutShiftRight) { num3 = num4 - withOutShiftRight; } num3 = EventEngineUtils.ClampAngle(num3); if (this.gMode == 1) { vector3_1.y = num3; actor.rotAngle[1] = num3; } else if (this.gMode == 3) { wmActor.rot1 = num3; } } } float deltaY; float rotx; if ((flags & 2) != 0 && flagsPosObj == null) { deltaY = y - y1; float num4 = this.distance(deltaX, 0.0f, deltaZ); float angle = EventEngineUtils.ClampAngle(this.eBin.angleAsm(-deltaY, -num4)); float num5 = EventEngineUtils.ClampAngle(actor.rot0); float a = angle - num5; if ((double)a < -180.0) { a += 360f; } else if ((double)a > 180.0 || EventEngineUtils.nearlyEqual(a, 180f)) { a -= 360f; } float withOutShiftRight = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)((int)actor.omega << 3)); if ((double)a > 0.0) { if ((double)a > (double)withOutShiftRight) { angle = num5 + withOutShiftRight; } } else if ((double)a < -(double)withOutShiftRight) { angle = num5 - withOutShiftRight; } rotx = EventEngineUtils.ClampAngle(angle); actor.rot0 = rotx; } else { rotx = 0.0f; deltaY = 0.0f; } Vector3 oVector; GetMoveVector(out oVector, rotx, num3, (float)actor.speed); if ((UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null && fieldMapActorController.name == fieldMapActorController.fieldMap.debugObjName) { Vector3 vector3_2 = new Vector3(x1, y1, z1); Vector3 vector3_3 = oVector; Vector3 vector3_4 = vector3_3.normalized * 100f * vector3_3.magnitude; Vector3 vector3_5 = new Vector3(0.0f, 100f, 0.0f); Vector3 vector3_6 = new Vector3(x, y, z); Debug.DrawLine(vector3_2 + vector3_5, vector3_2 + vector3_4 + vector3_5, Color.magenta, 2f, true); Debug.DrawLine(vector3_2 + vector3_5, vector3_2 + Vector3.up * 50f + vector3_5, Color.blue, 2f, true); } Vector3 vector3_7 = new Vector3(x1, y1, z1) + oVector; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if ((UnityEngine.Object)fieldMapActorController == (UnityEngine.Object)null) { actor.pos[0] = vector3_7.x; actor.pos[1] = vector3_7.y; actor.pos[2] = vector3_7.z; } else { fieldMapActorController.curPos = fieldMapActorController.curPos + oVector; fieldMapActorController.SyncPosToTransform(); } } else if (this.gMode == 3) { wmActor.SetPosition(vector3_7.x, vector3_7.y, vector3_7.z); } if (this.gMode == 1 && (UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null) { if ((int)fieldMapActorController.originalActor.uid == 2 && (int)FF9StateSystem.Common.FF9.fldMapNo == 1605 && this.eBin.getVarManually(220) == 6622) { fieldMapActorController.originalActor.collRad = (byte)10; } if ((int)fieldMapActorController.originalActor.uid == 18 && (int)FF9StateSystem.Common.FF9.fldMapNo == 575 && this.eBin.getVarManually(220) == 3165) { fieldMapActorController.originalActor.collRad = (byte)34; } posObj = fieldMapActorController.walkMesh.Collision(fieldMapActorController, 0, out distance); if (posObj != null && ((double)distance < 0.0 || EventEngineUtils.nearlyEqual(distance, 0.0f))) { fieldMapActorController.curPos = fieldMapActorController.curPos - oVector; } } else if (this.gMode == 3) { posObj = (PosObj)this.Collision(this, (PosObj)actor, 0, ref distance); if (posObj != null && ((double)distance < 0.0 || EventEngineUtils.nearlyEqual(distance, 0.0f))) { wmActor.SetPosition(x1, y1, z1); } actor.pos[0] = vector3_7[0]; actor.pos[1] = vector3_7[1]; actor.pos[2] = vector3_7[2]; } if ((int)actor.loopCount != 0 && (int)actor.loopCount != (int)byte.MaxValue) { --actor.loopCount; } bool flag1 = (int)actor.loopCount != 0; if (flagsPosObj != null) { flag1 = posObj != flagsPosObj || (double)distance > 0.0; } float a1 = this.dist64(deltaX, deltaY, deltaZ); if ((double)a1 < (double)num1 * (double)num1 || ((int)actor.actf & EventEngine.actMove) != 0 && (double)a1 > (double)actor.lastdist) { if ((double)a1 < (double)num1 * (double)num1 && (int)FF9StateSystem.Common.FF9.fldMapNo != 2204 && ((int)FF9StateSystem.Common.FF9.fldMapNo != 2209 || PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(220) != 9850) && (this.gMode == 1 && (UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null)) { fieldMapActorController.curPos.x = x; fieldMapActorController.curPos.z = z; fieldMapActorController.SyncPosToTransform(); } flag1 = false; } bool flag2 = false; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 901) { if ((int)actor.sid == 1) { flag2 = true; } } else if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1808) { if ((int)actor.sid == 4 || (int)actor.sid == 5) { flag2 = true; } } else if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1810 && (int)actor.sid == 5) { flag2 = true; } if (flag2 && (double)a1 > (double)actor.lastdist && (posObj != null && (int)posObj.uid == (int)this.GetControlUID())) { flag1 = true; } if ((double)actor.lastdist < (double)EventEngine.kInitialDist && (double)a1 < (double)actor.lastdist) { actor.actf |= (ushort)EventEngine.actMove; } if ((int)FF9StateSystem.Common.FF9.fldMapNo == 571 && (int)actor.sid == 4 && (EventEngineUtils.nearlyEqual(x, 887f) && EventEngineUtils.nearlyEqual(z, 1419f)) && (double)a1 > (double)actor.lastdist) { fieldMapActorController.curPos.x = 887f; fieldMapActorController.curPos.z = 1419f; fieldMapActorController.SyncPosToTransform(); return(true); } actor.lastdist = a1; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 2954 && (int)actor.sid == 11 && EventEngineUtils.nearlyEqual(a1, 32420f)) { return(false); } if (!flag1) { this.clrdist(actor); } if ((int)actor.uid == (int)this._context.controlUID) { ++this.gAnimCount; } return(flag1); }