コード例 #1
0
ファイル: BspPortal.cs プロジェクト: uvbs/Pegasus
        public override bool UnPack(BinaryReader reader)
        {
            throw new NotSupportedException();
            SplitingPlane.UnPack(reader);

            return(true);
        }
コード例 #2
0
ファイル: BspNode.cs プロジェクト: uvbs/Pegasus
        public virtual bool UnPack(BinaryReader reader)
        {
            SplitingPlane.UnPack(reader);

            switch (Type)
            {
            case BspNodeType.BPnn:
            case BspNodeType.BPIn:
            {
                if (!UnPackChild(out BspNode posNode, reader))
                {
                    return(false);
                }
                PosNode = posNode;
                break;
            }

            case BspNodeType.BpIN:
            case BspNodeType.BpnN:
            {
                if (!UnPackChild(out BspNode negNode, reader))
                {
                    return(false);
                }
                NegNode = negNode;
                break;
            }

            case BspNodeType.BPIN:
            case BspNodeType.BPnN:
            {
                if (!UnPackChild(out BspNode posNode, reader))
                {
                    return(false);
                }
                PosNode = posNode;
                if (!UnPackChild(out BspNode negNode, reader))
                {
                    return(false);
                }
                NegNode = negNode;
                break;
            }
            }

            if (PackTreeType != BspTreeType.Drawing)
            {
                if (PackTreeType == BspTreeType.Physics)
                {
                    Sphere.UnPack(reader);
                }

                return(true);
            }

            Sphere.UnPack(reader);

            uint numPolys = reader.ReadUInt32();

            if (numPolys > 0u)
            {
                InPolys = new CPolygon[numPolys];
                for (uint i = 0u; i < numPolys; i++)
                {
                    InPolys[i] = PackPolys[reader.ReadUInt16()];
                }
            }

            return(true);
        }