예제 #1
0
    // Token: 0x0600198D RID: 6541 RVA: 0x000E7910 File Offset: 0x000E5B10
    private static uint nnCalcClipBoxNode(AppMain.NNS_NODE node, NNS_MATRIX mtx)
    {
        float boundingBoxX = node.BoundingBoxX;
        float boundingBoxY = node.BoundingBoxY;
        float boundingBoxZ = node.BoundingBoxZ;

        return(AppMain.nnCalcClipBox(node.Center, boundingBoxX, boundingBoxY, boundingBoxZ, mtx));
    }
예제 #2
0
 // Token: 0x06001992 RID: 6546 RVA: 0x000E81DC File Offset: 0x000E63DC
 private static void nnCalcClipSetNodeStatus(uint[] pNodeStatList, AppMain.NNS_NODE[] pNodeList, int nodeIdx, NNS_MATRIX pNodeMtx, float rootscale, uint flag)
 {
     AppMain.nnclip.nnsNodeStatList = pNodeStatList;
     AppMain.nnclip.nnsNodeList     = pNodeList;
     AppMain.NNS_NODE nns_NODE = pNodeList[nodeIdx];
     if ((pNodeStatList[nodeIdx] & 1025U) != 0U)
     {
         return;
     }
     if ((nns_NODE.fType & 16U) != 0U)
     {
         pNodeStatList[nodeIdx] |= 1U;
     }
     if ((nns_NODE.fType & 32U) != 0U)
     {
         pNodeStatList[nodeIdx] |= 1U;
         if (nns_NODE.iChild != -1)
         {
             AppMain.nnSetUpNodeStatusListFlag(( int )nns_NODE.iChild, 1U);
         }
         return;
     }
     if (flag != 0U)
     {
         if (nns_NODE.iMatrix == -1 && (flag & 8U) == 0U)
         {
             return;
         }
         if ((nns_NODE.fType & 2097152U) != 0U && (nns_NODE.fType & 4194304U) == 0U && (flag & 32U) == 0U)
         {
             pNodeStatList[nodeIdx] |= AppMain.nnCalcClipBoxNode(nns_NODE, pNodeMtx);
         }
         else if ((flag & 16U) != 0U)
         {
             pNodeStatList[nodeIdx] |= AppMain.nnCalcClip(nns_NODE.Center, nns_NODE.Radius, pNodeMtx);
         }
         else
         {
             pNodeStatList[nodeIdx] |= AppMain.nnCalcClipUniformScale(nns_NODE.Center, nns_NODE.Radius, pNodeMtx, rootscale);
         }
         if ((pNodeStatList[nodeIdx] & 16U) != 0U)
         {
             if ((flag & 2U) != 0U)
             {
                 pNodeStatList[nodeIdx] |= 1024U;
             }
             else
             {
                 pNodeStatList[nodeIdx] |= 1U;
             }
             if ((flag & 8U) != 0U && nns_NODE.iChild != -1)
             {
                 AppMain.nnSetUpNodeStatusListFlag(( int )nns_NODE.iChild, pNodeStatList[nodeIdx]);
             }
         }
     }
 }
예제 #3
0
 private static void gmBsCmnGetNodeInvWorldMtx(
     AppMain.NNS_MATRIX dest_mtx,
     AppMain.NNS_NODE node,
     AppMain.NNS_MATRIX inv_view_mtx,
     AppMain.NNS_MATRIX[] mtx_plt)
 {
     AppMain.nnMultiplyMatrix(dest_mtx, inv_view_mtx, mtx_plt[(int)node.iMatrix]);
     AppMain.nnInvertMatrix(dest_mtx, dest_mtx);
     AppMain.nnMultiplyMatrix(dest_mtx, node.InvInitMtx, dest_mtx);
 }
예제 #4
0
 public NNS_NODE(AppMain.NNS_NODE node)
 {
     this.fType    = node.fType;
     this.iMatrix  = node.iMatrix;
     this.iParent  = node.iParent;
     this.iChild   = node.iChild;
     this.iSibling = node.iSibling;
     this.Translation.Assign(node.Translation);
     this.Rotation = node.Rotation;
     this.Scaling.Assign(node.Scaling);
     this.InvInitMtx.Assign(node.InvInitMtx);
     this.Center.Assign(node.Center);
     this.Radius         = node.Radius;
     this.User           = node.User;
     this.SIIKBoneLength = node.SIIKBoneLength;
     this.BoundingBoxY   = node.BoundingBoxY;
     this.BoundingBoxZ   = node.BoundingBoxZ;
 }