Exemplo n.º 1
0
        public static BgVertex GetVertex(DynaCollisionContext dyna, BgActor bgActor, short id)
        {
            var ptr = dyna.vtxList.RelOff(id * 6);

            return(new BgVertex(id,
                                ptr.ReadInt16(0),
                                ptr.ReadInt16(2),
                                ptr.ReadInt16(4)));
        }
Exemplo n.º 2
0
        public CollisionCtx(Ptr ctx, RomVersion version)
        {
            this.version = version;
            SceneMeshPtr = ctx.Deref(0);

            boxmin = new Vector3 <float>(
                ctx.ReadFloat(0x04),
                ctx.ReadFloat(0x08),
                ctx.ReadFloat(0x0C)
                );

            boxmax = new Vector3 <float>(
                ctx.ReadFloat(0x10),
                ctx.ReadFloat(0x14),
                ctx.ReadFloat(0x18)
                );

            max = new Vector3 <int>(
                ctx.ReadInt32(0x1C),
                ctx.ReadInt32(0x20),
                ctx.ReadInt32(0x24)
                );

            unitSize = new Vector3 <float>(
                ctx.ReadFloat(0x28),
                ctx.ReadFloat(0x2C),
                ctx.ReadFloat(0x30)
                );

            factor = new Vector3 <float>(
                ctx.ReadFloat(0x34),
                ctx.ReadFloat(0x38),
                ctx.ReadFloat(0x3C)
                );

            Table        = ctx.Deref(0x40);
            SSNodeMax    = ctx.ReadInt16(0x44);
            SSNodeCount  = ctx.ReadInt16(0x46);
            SSNodeTbl    = ctx.Deref(0x48);
            polyCheckTbl = ctx.Deref(0x4C);
            dyna         = new DynaCollisionContext(ctx, version);

            if (version.Game == Game.OcarinaOfTime)
            {
                mem_size = ctx.ReadInt32(0x1460);
            }
            else if (version.Game == Game.MajorasMask)
            {
                mem_size = ctx.ReadInt32(0x1468);
                flags    = ctx.ReadInt32(0x146C);
            }
        }