mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,679 @@
|
||||
/*
|
||||
File: QD3DPick.h
|
||||
|
||||
Contains: Q3Pick methods
|
||||
|
||||
Version: Technology: Quickdraw 3D 1.6
|
||||
Release: QuickTime 7.3
|
||||
|
||||
Copyright: (c) 2007 (c) 1995-1998 by Apple Computer, Inc., all rights reserved.
|
||||
|
||||
Bugs?: For bug reports, consult the following page on
|
||||
the World Wide Web:
|
||||
|
||||
http://developer.apple.com/bugreporter/
|
||||
|
||||
*/
|
||||
#ifndef __QD3DPICK__
|
||||
#define __QD3DPICK__
|
||||
|
||||
#ifndef __QD3D__
|
||||
#include <QD3D.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __QD3DSTYLE__
|
||||
#include <QD3DStyle.h>
|
||||
#endif
|
||||
|
||||
#ifndef __QD3DGEOMETRY__
|
||||
#include <QD3DGeometry.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#if PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if PRAGMA_IMPORT
|
||||
#pragma import on
|
||||
#endif
|
||||
|
||||
#if PRAGMA_STRUCT_ALIGN
|
||||
#pragma options align=power
|
||||
#elif PRAGMA_STRUCT_PACKPUSH
|
||||
#pragma pack(push, 2)
|
||||
#elif PRAGMA_STRUCT_PACK
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
|
||||
#if PRAGMA_ENUM_ALWAYSINT
|
||||
#if defined(__fourbyteints__) && !__fourbyteints__
|
||||
#define __QD3DPICK__RESTORE_TWOBYTEINTS
|
||||
#pragma fourbyteints on
|
||||
#endif
|
||||
#pragma enumsalwaysint on
|
||||
#elif PRAGMA_ENUM_OPTIONS
|
||||
#pragma option enum=int
|
||||
#elif PRAGMA_ENUM_PACK
|
||||
#if __option(pack_enums)
|
||||
#define __QD3DPICK__RESTORE_PACKED_ENUMS
|
||||
#pragma options(!pack_enums)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
** **
|
||||
** Mask bits for hit information **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
enum TQ3PickDetailMasks {
|
||||
kQ3PickDetailNone = 0,
|
||||
kQ3PickDetailMaskPickID = 1 << 0,
|
||||
kQ3PickDetailMaskPath = 1 << 1,
|
||||
kQ3PickDetailMaskObject = 1 << 2,
|
||||
kQ3PickDetailMaskLocalToWorldMatrix = 1 << 3,
|
||||
kQ3PickDetailMaskXYZ = 1 << 4,
|
||||
kQ3PickDetailMaskDistance = 1 << 5,
|
||||
kQ3PickDetailMaskNormal = 1 << 6,
|
||||
kQ3PickDetailMaskShapePart = 1 << 7,
|
||||
kQ3PickDetailMaskPickPart = 1 << 8,
|
||||
kQ3PickDetailMaskUV = 1 << 9
|
||||
};
|
||||
typedef enum TQ3PickDetailMasks TQ3PickDetailMasks;
|
||||
|
||||
typedef unsigned long TQ3PickDetail;
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Hitlist sorting **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
enum TQ3PickSort {
|
||||
kQ3PickSortNone = 0,
|
||||
kQ3PickSortNearToFar = 1,
|
||||
kQ3PickSortFarToNear = 2
|
||||
};
|
||||
typedef enum TQ3PickSort TQ3PickSort;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Data structures to set up the pick object **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
#define kQ3ReturnAllHits 0
|
||||
struct TQ3PickData {
|
||||
TQ3PickSort sort;
|
||||
TQ3PickDetail mask;
|
||||
unsigned long numHitsToReturn;
|
||||
};
|
||||
typedef struct TQ3PickData TQ3PickData;
|
||||
struct TQ3WindowPointPickData {
|
||||
TQ3PickData data;
|
||||
TQ3Point2D point;
|
||||
float vertexTolerance;
|
||||
float edgeTolerance;
|
||||
};
|
||||
typedef struct TQ3WindowPointPickData TQ3WindowPointPickData;
|
||||
struct TQ3WindowRectPickData {
|
||||
TQ3PickData data;
|
||||
TQ3Area rect;
|
||||
};
|
||||
typedef struct TQ3WindowRectPickData TQ3WindowRectPickData;
|
||||
struct TQ3WorldRayPickData {
|
||||
TQ3PickData data;
|
||||
TQ3Ray3D ray;
|
||||
float vertexTolerance;
|
||||
float edgeTolerance;
|
||||
};
|
||||
typedef struct TQ3WorldRayPickData TQ3WorldRayPickData;
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Hit data **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
struct TQ3HitPath {
|
||||
TQ3GroupObject rootGroup;
|
||||
unsigned long depth;
|
||||
TQ3GroupPosition * positions;
|
||||
};
|
||||
typedef struct TQ3HitPath TQ3HitPath;
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Pick class methods **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
#if CALL_NOT_IN_CARBON
|
||||
/*
|
||||
* Q3Pick_GetType()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3ObjectType )
|
||||
Q3Pick_GetType(TQ3PickObject pick);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetData(
|
||||
TQ3PickObject pick,
|
||||
TQ3PickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_SetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_SetData(
|
||||
TQ3PickObject pick,
|
||||
const TQ3PickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetVertexTolerance()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetVertexTolerance(
|
||||
TQ3PickObject pick,
|
||||
float * vertexTolerance);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetEdgeTolerance()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetEdgeTolerance(
|
||||
TQ3PickObject pick,
|
||||
float * edgeTolerance);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_SetVertexTolerance()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_SetVertexTolerance(
|
||||
TQ3PickObject pick,
|
||||
float vertexTolerance);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_SetEdgeTolerance()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_SetEdgeTolerance(
|
||||
TQ3PickObject pick,
|
||||
float edgeTolerance);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetNumHits()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetNumHits(
|
||||
TQ3PickObject pick,
|
||||
unsigned long * numHits);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_EmptyHitList()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_EmptyHitList(TQ3PickObject pick);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetPickDetailValidMask()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetPickDetailValidMask(
|
||||
TQ3PickObject pick,
|
||||
unsigned long index,
|
||||
TQ3PickDetail * pickDetailValidMask);
|
||||
|
||||
|
||||
/*
|
||||
* Q3Pick_GetPickDetailData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3Pick_GetPickDetailData(
|
||||
TQ3PickObject pick,
|
||||
unsigned long index,
|
||||
TQ3PickDetail pickDetailValue,
|
||||
void * detailData);
|
||||
|
||||
|
||||
/*
|
||||
* Q3HitPath_EmptyData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3HitPath_EmptyData(TQ3HitPath * hitPath);
|
||||
|
||||
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Window point pick methods **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
#if CALL_NOT_IN_CARBON
|
||||
/*
|
||||
* Q3WindowPointPick_New()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3PickObject )
|
||||
Q3WindowPointPick_New(const TQ3WindowPointPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowPointPick_GetPoint()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowPointPick_GetPoint(
|
||||
TQ3PickObject pick,
|
||||
TQ3Point2D * point);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowPointPick_SetPoint()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowPointPick_SetPoint(
|
||||
TQ3PickObject pick,
|
||||
const TQ3Point2D * point);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowPointPick_GetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowPointPick_GetData(
|
||||
TQ3PickObject pick,
|
||||
TQ3WindowPointPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowPointPick_SetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowPointPick_SetData(
|
||||
TQ3PickObject pick,
|
||||
const TQ3WindowPointPickData * data);
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Window rect pick methods **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
/*
|
||||
* Q3WindowRectPick_New()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3PickObject )
|
||||
Q3WindowRectPick_New(const TQ3WindowRectPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowRectPick_GetRect()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowRectPick_GetRect(
|
||||
TQ3PickObject pick,
|
||||
TQ3Area * rect);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowRectPick_SetRect()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowRectPick_SetRect(
|
||||
TQ3PickObject pick,
|
||||
const TQ3Area * rect);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowRectPick_GetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowRectPick_GetData(
|
||||
TQ3PickObject pick,
|
||||
TQ3WindowRectPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WindowRectPick_SetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WindowRectPick_SetData(
|
||||
TQ3PickObject pick,
|
||||
const TQ3WindowRectPickData * data);
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** World ray pick methods **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
/*
|
||||
* Q3WorldRayPick_New()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3PickObject )
|
||||
Q3WorldRayPick_New(const TQ3WorldRayPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WorldRayPick_GetRay()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WorldRayPick_GetRay(
|
||||
TQ3PickObject pick,
|
||||
TQ3Ray3D * ray);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WorldRayPick_SetRay()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WorldRayPick_SetRay(
|
||||
TQ3PickObject pick,
|
||||
const TQ3Ray3D * ray);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WorldRayPick_GetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WorldRayPick_GetData(
|
||||
TQ3PickObject pick,
|
||||
TQ3WorldRayPickData * data);
|
||||
|
||||
|
||||
/*
|
||||
* Q3WorldRayPick_SetData()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3WorldRayPick_SetData(
|
||||
TQ3PickObject pick,
|
||||
const TQ3WorldRayPickData * data);
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** **
|
||||
** Shape Part methods **
|
||||
** **
|
||||
*****************************************************************************/
|
||||
/*
|
||||
* Q3ShapePart_GetType()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3ObjectType )
|
||||
Q3ShapePart_GetType(TQ3ShapePartObject shapePartObject);
|
||||
|
||||
|
||||
/*
|
||||
* Q3MeshPart_GetType()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3ObjectType )
|
||||
Q3MeshPart_GetType(TQ3MeshPartObject meshPartObject);
|
||||
|
||||
|
||||
/*
|
||||
* Q3ShapePart_GetShape()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3ShapePart_GetShape(
|
||||
TQ3ShapePartObject shapePartObject,
|
||||
TQ3ShapeObject * shapeObject);
|
||||
|
||||
|
||||
/*
|
||||
* Q3MeshPart_GetComponent()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3MeshPart_GetComponent(
|
||||
TQ3MeshPartObject meshPartObject,
|
||||
TQ3MeshComponent * component);
|
||||
|
||||
|
||||
/*
|
||||
* Q3MeshFacePart_GetFace()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3MeshFacePart_GetFace(
|
||||
TQ3MeshFacePartObject meshFacePartObject,
|
||||
TQ3MeshFace * face);
|
||||
|
||||
|
||||
/*
|
||||
* Q3MeshEdgePart_GetEdge()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3MeshEdgePart_GetEdge(
|
||||
TQ3MeshEdgePartObject meshEdgePartObject,
|
||||
TQ3MeshEdge * edge);
|
||||
|
||||
|
||||
/*
|
||||
* Q3MeshVertexPart_GetVertex()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( TQ3Status )
|
||||
Q3MeshVertexPart_GetVertex(
|
||||
TQ3MeshVertexPartObject meshVertexPartObject,
|
||||
TQ3MeshVertex * vertex);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
|
||||
#if PRAGMA_ENUM_ALWAYSINT
|
||||
#pragma enumsalwaysint reset
|
||||
#ifdef __QD3DPICK__RESTORE_TWOBYTEINTS
|
||||
#pragma fourbyteints off
|
||||
#endif
|
||||
#elif PRAGMA_ENUM_OPTIONS
|
||||
#pragma option enum=reset
|
||||
#elif defined(__QD3DPICK__RESTORE_PACKED_ENUMS)
|
||||
#pragma options(pack_enums)
|
||||
#endif
|
||||
|
||||
#if PRAGMA_STRUCT_ALIGN
|
||||
#pragma options align=reset
|
||||
#elif PRAGMA_STRUCT_PACKPUSH
|
||||
#pragma pack(pop)
|
||||
#elif PRAGMA_STRUCT_PACK
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
#ifdef PRAGMA_IMPORT_OFF
|
||||
#pragma import off
|
||||
#elif PRAGMA_IMPORT
|
||||
#pragma import reset
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __QD3DPICK__ */
|
||||
|
||||
Reference in New Issue
Block a user