2012-03-04 67 views
2

我正在進行大學任務以改進遊戲引擎。我們給出的代碼將D3網格對象存儲在Frame類中,該類描述了網格的邊界體積。問題在於引擎必須處理不同類型的邊界體積(如球體,AABB和OABB)之間的碰撞。如何處理不同的邊界體積類型?

給定Frame類的工作方式是通過具有用於所有不同的邊界體積類型的數據成員和類型ID,以指示它的使用哪一個。給定任何兩個Frame對象,調用代碼將請求其類型ID,並計算出使用哪種碰撞方法。

我做的第一件事是創建各種BV類型的子類,所以纔有了對象需要分配內存。現在我試圖找出調用代碼檢查這兩個子類之間碰撞的更好方法。讓他們返回一個類型ID似乎是不好的做法。有沒有這樣做的標準方式?

回答

1

什麼你問被稱爲double-dispatch

+1

感謝這讓我閱讀了有關多派遣的一般情況。從我看到的例子看來,動態投射可能是我的最佳選擇 - [Wiki](http://en.wikipedia.org/wiki/Multiple_dispatch#C.2B.2B)。 理想情況下,我想避免在子類之間重複代碼,因爲'Sphere'和'AABB'會使用相同的方法來檢測彼此之間的衝突。這是否意味着將我的所有碰撞檢測方法存儲在另一個類中? – PeddleSpam 2012-03-04 18:18:18

相關問題