2012-01-24 3 views
0

현재 SlimDX를 재미있게 사용하여 C#으로 작은 게임 엔진을 작성하려고합니다.ID2D1PathGeometry에서 경로 세그먼트 가져 오기

나는 내 세계를 파괴 할 수 있기를 원한다. 그래서 나는 내지도를 수정할 수 있어야한다. 내지도는 현재 벡터 기반이며 ID2D1PathGeometry (SlimDX의 PathGeometry) 개체로 표시됩니다. 이 개체는 CombineWithGeometry 메서드가 ID2D1Geometry (SlimDX의 Geometry)을 사용하여 수정되었습니다.

합리적인 충돌 탐지를 위해, 예를 들어 벽의 공이 튀는 각도를 계산할 때 ID2D1PathGeometry 객체의 정확한 모양에 대한 지식이 필요합니다.

그래서 내 ID2D1PathGeometry 객체의 모든 세그먼트 또는 특정 위치 (세그먼트)에 액세스 할 수 있습니까? 또는 내 목표를 달성 할 수있는 다른 방법이 있습니까? 모든 선과 도형을 다른 데이터 구조에 추가로 저장 하시겠습니까?

지도 크기에 제약 조건으로 메모리를 갖고 싶지 않기 때문에 비트 맵 기반지도는 여기에 오는 방법이 아닙니다.

안부와

, 에미

답변

1

는 특정 지점에 가까운 형상 세그먼트를 검색하는 방법은 없지만, 모든 형상 세그먼트를 검색하는 방법이있다.

  1. ID2D1SimplifiedGeometrySink에서 상속받은 클래스를 구현하십시오.
  2. 해당 클래스의 인스턴스를 만들고 ID2D1Geometry :: Simplify에 전달합니다.

    1. 하는 시점을 둘러싼 직사각형 형상을 만들기 :

    더 많은 정보와 예제는 How to Retrieve Geometry Data by Extending ID2D1SimplifiedGeometrySink 당신이 특정 지점에 가까이에만 부분을 검색에 관심이 있다면

    는, 아마도 당신이하고 싶은 여기에 있습니다 관심의 대상.

  3. D2S1_COMBINE_MODE == D2D1_COMBINE_MODE_INTERSECT를 사용하여 ID2D1Geometry::CombineWithGeometry을 통해 형상과 교차시킵니다.
  4. 위의 방법을 사용하여 교차 된 지오메트리의 싱크를 가져옵니다.

상세 정보 : ID2D1Geometry::CombineWithGeometry method

관련 문제