mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Merge pull request #811 from LuisAntonRebollo/fix_opcode_x64
Fixed OPCODE problems with x64.
This commit is contained in:
commit
b8b762805f
|
|
@ -291,21 +291,21 @@ bool AABBTreeNode::Subdivide(AABBTreeBuilder* builder)
|
|||
// Set last bit to tell it shouldn't be freed ### pretty ugly, find a better way. Maybe one bit in mNbPrimitives
|
||||
ASSERT(!(udword(&Pool[Count+0])&1));
|
||||
ASSERT(!(udword(&Pool[Count+1])&1));
|
||||
mPos = udword(&Pool[Count+0])|1;
|
||||
mPos = size_t(&Pool[Count+0])|1;
|
||||
#ifndef OPC_NO_NEG_VANILLA_TREE
|
||||
mNeg = udword(&Pool[Count+1])|1;
|
||||
mNeg = size_t(&Pool[Count+1])|1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// Non-complete trees and/or Opcode 1.2 allocate nodes on-the-fly
|
||||
#ifndef OPC_NO_NEG_VANILLA_TREE
|
||||
mPos = (udword)new AABBTreeNode; CHECKALLOC(mPos);
|
||||
mNeg = (udword)new AABBTreeNode; CHECKALLOC(mNeg);
|
||||
mPos = (size_t)new AABBTreeNode; CHECKALLOC(mPos);
|
||||
mNeg = (size_t)new AABBTreeNode; CHECKALLOC(mNeg);
|
||||
#else
|
||||
AABBTreeNode* PosNeg = new AABBTreeNode[2];
|
||||
CHECKALLOC(PosNeg);
|
||||
mPos = (udword)PosNeg;
|
||||
mPos = (size_t)PosNeg;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
/* Following data always belong to the BV-tree, regardless of what the tree actually contains.*/ \
|
||||
/* Whatever happens we need the two children and the enclosing volume.*/ \
|
||||
volume mBV; /* Global bounding-volume enclosing all the node-related primitives */ \
|
||||
udword mPos; /* "Positive" & "Negative" children */
|
||||
size_t mPos; /* "Positive" & "Negative" children */
|
||||
#else
|
||||
//! TO BE DOCUMENTED
|
||||
#define IMPLEMENT_TREE(base_class, volume) \
|
||||
|
|
@ -68,8 +68,8 @@
|
|||
/* Following data always belong to the BV-tree, regardless of what the tree actually contains.*/ \
|
||||
/* Whatever happens we need the two children and the enclosing volume.*/ \
|
||||
volume mBV; /* Global bounding-volume enclosing all the node-related primitives */ \
|
||||
udword mPos; /* "Positive" child */ \
|
||||
udword mNeg; /* "Negative" child */
|
||||
size_t mPos; /* "Positive" child */ \
|
||||
size_t mNeg; /* "Negative" child */
|
||||
#endif
|
||||
|
||||
typedef void (*CullingCallback) (udword nb_primitives, udword* node_primitives, BOOL need_clipping, void* user_data);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ static void _BuildCollisionTree(AABBCollisionNode* linear, const udword box_id,
|
|||
udword PosID = current_id++; // Get a new id for positive child
|
||||
udword NegID = current_id++; // Get a new id for negative child
|
||||
// Setup box data as the forthcoming new P pointer
|
||||
linear[box_id].mData = (udword)&linear[PosID];
|
||||
linear[box_id].mData = (size_t)&linear[PosID];
|
||||
// Make sure it's not marked as leaf
|
||||
ASSERT(!(linear[box_id].mData&1));
|
||||
// Recurse with new IDs
|
||||
|
|
@ -171,7 +171,7 @@ static void _BuildNoLeafTree(AABBNoLeafNode* linear, const udword box_id, udword
|
|||
// Get a new id for positive child
|
||||
udword PosID = current_id++;
|
||||
// Setup box data
|
||||
linear[box_id].mPosData = (udword)&linear[PosID];
|
||||
linear[box_id].mPosData = (size_t)&linear[PosID];
|
||||
// Make sure it's not marked as leaf
|
||||
ASSERT(!(linear[box_id].mPosData&1));
|
||||
// Recurse
|
||||
|
|
@ -192,7 +192,7 @@ static void _BuildNoLeafTree(AABBNoLeafNode* linear, const udword box_id, udword
|
|||
// Get a new id for negative child
|
||||
udword NegID = current_id++;
|
||||
// Setup box data
|
||||
linear[box_id].mNegData = (udword)&linear[NegID];
|
||||
linear[box_id].mNegData = (size_t)&linear[NegID];
|
||||
// Make sure it's not marked as leaf
|
||||
ASSERT(!(linear[box_id].mNegData&1));
|
||||
// Recurse
|
||||
|
|
@ -549,8 +549,8 @@ bool AABBNoLeafTree::Walk(GenericWalkingCallback callback, void* user_data) cons
|
|||
if(!(Data&1)) \
|
||||
{ \
|
||||
/* Compute box number */ \
|
||||
udword Nb = (Data - udword(Nodes))/Nodes[i].GetNodeSize(); \
|
||||
Data = udword(&mNodes[Nb]); \
|
||||
udword Nb = (Data - size_t(Nodes))/Nodes[i].GetNodeSize(); \
|
||||
Data = (size_t) &mNodes[Nb] ; \
|
||||
} \
|
||||
/* ...remapped */ \
|
||||
mNodes[i].member = Data;
|
||||
|
|
@ -612,7 +612,7 @@ bool AABBQuantizedTree::Build(AABBTree* tree)
|
|||
INIT_QUANTIZATION
|
||||
|
||||
// Quantize
|
||||
udword Data;
|
||||
size_t Data;
|
||||
for(udword i=0;i<mNbNodes;i++)
|
||||
{
|
||||
PERFORM_QUANTIZATION
|
||||
|
|
@ -727,7 +727,7 @@ bool AABBQuantizedNoLeafTree::Build(AABBTree* tree)
|
|||
INIT_QUANTIZATION
|
||||
|
||||
// Quantize
|
||||
udword Data;
|
||||
size_t Data;
|
||||
for(udword i=0;i<mNbNodes;i++)
|
||||
{
|
||||
PERFORM_QUANTIZATION
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
inline_ udword GetNodeSize() const { return SIZEOFOBJECT; } \
|
||||
\
|
||||
volume mAABB; \
|
||||
udword mData;
|
||||
size_t mData;
|
||||
|
||||
//! Common interface for a node of a no-leaf tree
|
||||
#define IMPLEMENT_NOLEAF_NODE(base_class, volume) \
|
||||
|
|
@ -56,8 +56,8 @@
|
|||
inline_ udword GetNodeSize() const { return SIZEOFOBJECT; } \
|
||||
\
|
||||
volume mAABB; \
|
||||
udword mPosData; \
|
||||
udword mNegData;
|
||||
size_t mPosData; \
|
||||
size_t mNegData;
|
||||
|
||||
class OPCODE_API AABBCollisionNode
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue