Castle Game Engine: CastleTriangleOctree: Class TTriangleOctreeNode

# Class TTriangleOctreeNode
Description | Hierarchy | Fields | Methods | Properties
## Unit CastleTriangleOctree ## Declaration `type TTriangleOctreeNode = class(TBaseTrianglesOctreeNode)` ## Description no description available, TBaseTrianglesOctreeNode description follows no description available, TOctreeNode description follows Octree node. Leaf nodes store a list of indexes in ItemsIndices array. These are usuallly indexes to some array of items on TOctree. For the sake of this unit they are just some integers that uniquely describe items that you want to keep in octree leafs. The base abstract `TOctreeNode` class doesn't clarify what kind of items are actually kept. Not leaf (internal) nodes have 8 children nodes in TreeSubNodes. Each TOctreeNode also has some essential properties like Box, MiddlePoint and ParentTree. ## Hierarchy TObject TOctreeNode TBaseTrianglesOctreeNode TTriangleOctreeNode ## Overview ### Methods
| `procedure PutItemIntoSubNodes(ItemIndex: integer); override;`
| `function CommonSphereLeaf(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonBoxLeaf(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonSegmentLeaf( out Intersection: TVector3Single; out IntersectionDistance: Single; const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonRayLeaf( out Intersection: TVector3Single; out IntersectionDistance: Single; const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function ParentTree: TTriangleOctree;`
| `function SphereCollision(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsSphereCollision(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function BoxCollision(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsBoxCollision(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function SegmentCollision( out Intersection: TVector3Single; out IntersectionDistance: Single; const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsSegmentCollision( const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function RayCollision( out Intersection: TVector3Single; out IntersectionDistance: Single; const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsRayCollision( const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
### Properties
| `property Items[ItemIndex:integer]: PTriangle read GetItems;`
## Description ### Methods
| `procedure PutItemIntoSubNodes(ItemIndex: integer); override;`
| `function CommonSphereLeaf(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonBoxLeaf(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonSegmentLeaf( out Intersection: TVector3Single; out IntersectionDistance: Single; const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function CommonRayLeaf( out Intersection: TVector3Single; out IntersectionDistance: Single; const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function ParentTree: TTriangleOctree;`
| `function SphereCollision(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsSphereCollision(const pos: TVector3Single; const Radius: Single; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function BoxCollision(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsBoxCollision(const ABox: TBox3D; const TriangleToIgnore: PTriangle; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function SegmentCollision( out Intersection: TVector3Single; out IntersectionDistance: Single; const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsSegmentCollision( const pos1, pos2: TVector3Single; const Tag: TMailboxTag; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
| `function RayCollision( out Intersection: TVector3Single; out IntersectionDistance: Single; const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const ReturnClosestIntersection: boolean; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): PTriangle; override;`
| `function IsRayCollision( const RayOrigin, RayDirection: TVector3Single; const Tag: TMailboxTag; const TriangleToIgnore: PTriangle; const IgnoreMarginAtStart: boolean; const TrianglesToIgnoreFunc: T3DTriangleIgnoreFunc): boolean; override;`
### Properties
| `property Items[ItemIndex:integer]: PTriangle read GetItems;`
Triangles stored in this octree leaf. This is a more comfortable way to access ItemsIndices array. Given ItemIndex indexes our ItemsIndices, and we return `ParentTree.Triangles[ItemsIndices[ItemIndex]]`.
Generated by PasDoc 0.13.0 on 2015-06-15 04:43:12