소스 검색

improve CollisionNode interface

David Rose 22 년 전
부모
커밋
4a1f108468
2개의 변경된 파일25개의 추가작업 그리고 0개의 파일을 삭제
  1. 23 0
      panda/src/collide/collisionNode.I
  2. 2 0
      panda/src/collide/collisionNode.h

+ 23 - 0
panda/src/collide/collisionNode.I

@@ -125,6 +125,17 @@ get_collide_geom() const {
   return (_flags & F_collide_geom) != 0;
   return (_flags & F_collide_geom) != 0;
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: CollisionNode::clear_solids
+//       Access: Published
+//  Description: Removes all solids from the node.
+////////////////////////////////////////////////////////////////////
+INLINE void CollisionNode::
+clear_solids() {
+  _solids.clear();
+  mark_bound_stale();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: CollisionNode::get_num_solids
 //     Function: CollisionNode::get_num_solids
 //       Access: Published
 //       Access: Published
@@ -146,6 +157,18 @@ get_solid(int n) const {
   return _solids[n];
   return _solids[n];
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: CollisionNode::set_solid
+//       Access: Published
+//  Description: Replaces the solid with the indicated index.
+////////////////////////////////////////////////////////////////////
+INLINE void CollisionNode::
+set_solid(int n, CollisionSolid *solid) {
+  nassertv(n >= 0 && n < get_num_solids());
+  _solids[n] = solid;
+  mark_bound_stale();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: CollisionNode::remove_solid
 //     Function: CollisionNode::remove_solid
 //       Access: Published
 //       Access: Published

+ 2 - 0
panda/src/collide/collisionNode.h

@@ -63,8 +63,10 @@ PUBLISHED:
   INLINE void set_collide_geom(bool flag);
   INLINE void set_collide_geom(bool flag);
   INLINE bool get_collide_geom() const;
   INLINE bool get_collide_geom() const;
 
 
+  INLINE void clear_solids();
   INLINE int get_num_solids() const;
   INLINE int get_num_solids() const;
   INLINE CollisionSolid *get_solid(int n) const;
   INLINE CollisionSolid *get_solid(int n) const;
+  INLINE void set_solid(int n, CollisionSolid *solid);
   INLINE void remove_solid(int n);
   INLINE void remove_solid(int n);
   INLINE int add_solid(CollisionSolid *solid);
   INLINE int add_solid(CollisionSolid *solid);