Example #1
0
    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;
        }
    }
Example #2
0
    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;
    }
Example #3
0
    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);
            }
        }
Example #5
0
    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;
        }
    }
Example #6
0
 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;
         }
     }
 }
Example #7
0
    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);
    }
Example #8
0
        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;
            }
        }
Example #9
0
    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));
    }
Example #10
0
    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);
    }
Example #11
0
    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);
    }
Example #12
0
    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;
    }
Example #13
0
    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);
    }