Example #1
0
        public unsafe static uint niecmod_safecall_script_get_func_ptr(IntPtr funcHandle)
        {
            if (NFinalizeDeath.GameIs64Bit(false))
            {
                return(0);
            }

#if GameVersion_0_Release_2_0_209
            if (funcHandle.value == null)
            {
                return(0);
            }

            uint r = 0;

            NFinalizeDeath.SafeCall(() =>
            {
                r = *(uint *)((uint)funcHandle.value) + 0x20u;
            });

            return(r);
#else
            return(0);
#endif // GameVersion_0_Release_2_0_209
        }
Example #2
0
        public override Posture OnReset(IGameObject objectBeingReset)
        {
            var sim = objectBeingReset as Sim ?? _Actor;

            if (sim != null && sim.mPosture is NiecPosture)
            {
                // Stop StackOverflowException
                sim.mPosture = null;
            }
            if (IsOpenDGSInstalled)
            {
                return(null);
            }
            if (NiecHelperSituation.isdgmods || !NiecHelperSituation.__acorewIsnstalled__)
            {
                objectBeingReset.OnReset();
            }
            else // if AweCore
            {
                bool done = false;
                NFinalizeDeath.SafeCall(() => {
                    var p = sim.mPosture;
                    try
                    {
                        sim.mPosture = null;
                        objectBeingReset.OnReset();
                    }
                    finally
                    {
                        sim.mPosture = p;
                    }
                    done = true;
                });
                if (!done && sim.mPosture != null)
                {
                    sim.mPosture = this;
                }
            }
            return(this);
        }
Example #3
0
        public unsafe static uint niecmod_safecall_script_get_func_ptr_dll(IntPtr internaldll_function)
        {
            if (NFinalizeDeath.GameIs64Bit(false))
            {
                return(0);
            }
#if GameVersion_0_Release_2_0_209
            if (internaldll_function.value == null)
            {
                return(0);
            }

            uint func_address = 0;
            uint r            = 0;

            NFinalizeDeath.SafeCall(() =>
            {
                var ptr = (uint)internaldll_function.value;

                var dll    = ptr + 0x8u;
                var func_i = *(uint *)dll;

                if (func_i == 0)
                {
                    r = 0;
                    return;
                }
                else
                {
                    func_address = func_i + 0x18u;
                    r            = *(uint *)func_address;
                    return;
                }
            });
            return(r);
#else
            return(0);
#endif // GameVersion_0_Release_2_0_209
        }
Example #4
0
 internal static void SafeCallSimDescCleanseO1(SimDescription simd)
 {
     NFinalizeDeath.SafeCall(() => { NFinalizeDeath.SimDescCleanse(simd, true, false); });
 }