summaryrefslogtreecommitdiffhomepage
path: root/Opcode/OpcodeLib/OPC_VolumeCollider.h
diff options
context:
space:
mode:
Diffstat (limited to 'Opcode/OpcodeLib/OPC_VolumeCollider.h')
-rw-r--r--Opcode/OpcodeLib/OPC_VolumeCollider.h138
1 files changed, 0 insertions, 138 deletions
diff --git a/Opcode/OpcodeLib/OPC_VolumeCollider.h b/Opcode/OpcodeLib/OPC_VolumeCollider.h
deleted file mode 100644
index 5c39ea3..0000000
--- a/Opcode/OpcodeLib/OPC_VolumeCollider.h
+++ /dev/null
@@ -1,138 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/*
- * OPCODE - Optimized Collision Detection
- * Copyright (C) 2001 Pierre Terdiman
- * Homepage: http://www.codercorner.com/Opcode.htm
- */
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/**
- * Contains base volume collider class.
- * \file OPC_VolumeCollider.h
- * \author Pierre Terdiman
- * \date June, 2, 2001
- */
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// Include Guard
-#ifndef __OPC_VOLUMECOLLIDER_H__
-#define __OPC_VOLUMECOLLIDER_H__
-
- struct OPCODE_API VolumeCache
- {
- VolumeCache() : Model(null) {}
- ~VolumeCache() {}
-
- Container TouchedPrimitives; //!< Indices of touched primitives
- const BaseModel* Model; //!< Owner
- };
-
- class OPCODE_API VolumeCollider : public Collider
- {
- public:
- // Constructor / Destructor
- VolumeCollider();
- virtual ~VolumeCollider() = 0;
-
- // Collision report
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Gets the number of touched primitives after a collision query.
- * \see GetContactStatus()
- * \see GetTouchedPrimitives()
- * \return the number of touched primitives
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- inline_ udword GetNbTouchedPrimitives() const { return mTouchedPrimitives ? mTouchedPrimitives->GetNbEntries() : 0; }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Gets the list of touched primitives after a collision query.
- * \see GetContactStatus()
- * \see GetNbTouchedPrimitives()
- * \return the list of touched primitives (primitive indices)
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- inline_ const udword* GetTouchedPrimitives() const { return mTouchedPrimitives ? mTouchedPrimitives->GetEntries() : null; }
-
- // Stats
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Stats: gets the number of Volume-BV overlap tests after a collision query.
- * \see GetNbVolumePrimTests()
- * \return the number of Volume-BV tests performed during last query
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- inline_ udword GetNbVolumeBVTests() const { return mNbVolumeBVTests; }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Stats: gets the number of Volume-Triangle overlap tests after a collision query.
- * \see GetNbVolumeBVTests()
- * \return the number of Volume-Triangle tests performed during last query
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- inline_ udword GetNbVolumePrimTests() const { return mNbVolumePrimTests; }
-
- // Settings
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Validates current settings. You should call this method after all the settings / callbacks have been defined for a collider.
- * \return null if everything is ok, else a string describing the problem
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- override(Collider) const char* ValidateSettings();
-
- protected:
- // Touched primitives
- Container* mTouchedPrimitives; //!< List of touched primitives
-
- // Dequantization coeffs
- IcePoint mCenterCoeff;
- IcePoint mExtentsCoeff;
- // Stats
- udword mNbVolumeBVTests; //!< Number of Volume-BV tests
- udword mNbVolumePrimTests; //!< Number of Volume-Primitive tests
- // Internal methods
- void _Dump(const AABBCollisionNode* node);
- void _Dump(const AABBNoLeafNode* node);
- void _Dump(const AABBQuantizedNode* node);
- void _Dump(const AABBQuantizedNoLeafNode* node);
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Initializes a query
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- override(Collider) inline_ void InitQuery()
- {
- // Reset stats & contact status
- mNbVolumeBVTests = 0;
- mNbVolumePrimTests = 0;
- Collider::InitQuery();
- }
-
- inline_ BOOL IsCacheValid(VolumeCache& cache)
- {
- // We're going to do a volume-vs-model query.
- if(cache.Model!=mCurrentModel)
- {
- // Cached list was for another model so we can't keep it
- // Keep track of new owner and reset cache
- cache.Model = mCurrentModel;
- return FALSE;
- }
- else
- {
- // Same models, no problem
- return TRUE;
- }
- }
- };
-
-#endif // __OPC_VOLUMECOLLIDER_H__