Esempio n. 1
0
                public static void H()
                {
                    var newFuncAddr = Marshal.GetFunctionPointerForDelegate(new Del((_dbobj, _cachepack) =>
                    {
                        var dbobj = Interop.DBObj.__CreateInstance(_dbobj);

                        var res = oldDel(_dbobj, _cachepack);
                        DatIOManager.OnSerializeFromCachePack(dbobj);
                        return(res);
                    }));

                    Hook.cHook.Hook(addr, newFuncAddr);
                }
Esempio n. 2
0
                public static void H()
                {
                    var newFuncAddr = Marshal.GetFunctionPointerForDelegate(new Del((_asyncCache, _dbobj, _qdid, _dbocache) =>
                    {
                        var dbobj    = Interop.DBObj.__CreateInstance(_dbobj);
                        var qdid     = Interop.QualifiedDataID.__CreateInstance(_qdid);
                        var dbocache = Interop.DBOCache.__CreateInstance(_dbocache);
                        DatIOManager.OnBeforeBlockingLoadInto(dbobj, qdid, dbocache);
                        var res = oldDel(_asyncCache, _dbobj, _qdid, _dbocache);
                        DatIOManager.OnAfterBlockingLoadInto(dbobj, qdid, dbocache);
                        return(res);
                    }));

                    Hook.cHook.Hook(addr, newFuncAddr);
                }
Esempio n. 3
0
                public static void H()
                {
                    var newFuncAddr = Marshal.GetFunctionPointerForDelegate(new Del((dbocache, qdid, arg3) =>
                    {
                        var retval = oldDel(dbocache, qdid, arg3);

                        if (DateTime.Now - PortaledLoader.BeginTime > TimeSpan.FromSeconds(2))
                        {
                            var cmdInterp = PortaledLoader.Instance?.Host?.Actions?.CommandInterpreter;
                            if (cmdInterp != null)
                            {
                                var intptr      = new IntPtr(cmdInterp.Value);
                                var cmdInterpEx = Interop.CommandInterpreter.__CreateInstance(intptr);
                                if (cmdInterpEx.Smartbox == null)
                                {
                                    return(retval);
                                }

                                var sbox             = cmdInterpEx.Smartbox;
                                var physicsObjPlayer = cmdInterpEx.Player;//FINE
                                if (physicsObjPlayer == null)
                                {
                                    return(retval);
                                }
                                var partarray = physicsObjPlayer.PartArray;
                                var parts     = partarray.Parts; //BROKEN
                                var setup     = partarray.Setup;
                                var cache     = setup.Dbobj.Dbobj.MPMaintainer;

                                var table   = cache.MObjTable.MIntrusiveTable;
                                var buckets = table.Buckets;

                                /*
                                 *
                                 * CPartArray* partArray = physicsObjPlayer.part_array;
                                 * CPhysicsPart** parts = partArray->parts;
                                 * CPhysicsPart* parts2 = *parts;
                                 * CPhysicsPart parts3 = *parts2;
                                 *
                                 * Core.ACTypes.CSurface* surfaces = *(Core.ACTypes.CSurface**)parts2->surfaces;
                                 * CGfxObj* gfx = *parts2->gfxobj;
                                 *
                                 * Core.ACTypes.ImgTex* tex = (Core.ACTypes.ImgTex*)surfaces->base1map;*///table.Buckets[(0x0200058e % table.MNumBuckets)].MData.MDID.Id.Id == 0x0200058e

                                foreach (var bucket in buckets)
                                {
                                    if (bucket != null)
                                    {
                                        if (bucket.MData != null)
                                        {
                                            var qdid1 = bucket.MData.MDID.Id.Id;
                                            if (qdid1 >= 0x02000000 && qdid1 < 0x03000000)
                                            {
                                                var csetup = Portaled.Interop.CSetup.__CreateInstance(bucket.MData.__Instance);
                                                //0x009d3808
                                                //0x009d3930
                                            }
                                        }
                                    }
                                }

                                var cacheptr = new IntPtr(*(int *)new IntPtr(0x00837bac).ToPointer());

                                var cachemain = Portaled.Interop.DBCache.__CreateInstance(cacheptr);
                                if (GetIfInMemory.cache == null)
                                {
                                    GetIfInMemory.cache = cachemain.AsyncCache;
                                }


                                DatIOManager.Initialize();

                                var t1 = Portaled.Service.Managers.DatIOManager.GetByDID <Portaled.Service.DBObj.RenderSurface>(0x060018F9);
                                var t2 = t1.Underlying.MPSurfaceBits;
                                var t3 = t1.Underlying.SourceData.SourceBits;


                                physicsObjPlayer.Friction = Portaled.Service.PortaledLoader.Friction;
                            }
                        }

                        return(retval);
                    }));

                    Hook.cHook.Hook(addr, newFuncAddr);
                }