Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

131 lines
4.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**********************************************************************
*<
FILE: osnap.h
DESCRIPTION: Classes for Osnaps
CREATED BY: John Hutchinson
HISTORY: December 9, 1996
*> Copyright (c) 1994, All Rights Reserved.
**********************************************************************/
#ifndef _OSNAP_H_
#define _OSNAP_H_
#include "tab.h"
#define RESET 0
#define NEXT 1
#define ICON_WIDTH 32
#define HILITE_NORMAL (1<<0)
#define HILITE_BOX (1<<1)
#define HILITE_NODE (1<<2)//Not implemented
#define HILITE_CROSSHAIR (1<<3)
#define OSNAP_STATE _T("ObjectSnapPluginState")
//Some types
class Candidate
{
public:
Candidate(){};
Candidate(Point3* p, int s, int num=0, ...);
void SetMeshPoint(int which, const Point3 p);
~Candidate();
Point3 *pt;
int type;
int count;
Point3 *meshverts;
};
//typedef Tab<Point3> Point3Tab;
typedef Tab<Candidate *> CandidateTab;
typedef void (*SnapCallback) (Object* pobj, IPoint2 *p) ;
class OsnapMarker;
class HitMesh;
class IOsnapManager;
//The osnap class
//===========================================================================
class Osnap {
friend class OsnapHit;
friend class OsnapManager;
protected:
BOOL *m_active;
DllExport void _Snap(INode* inode, TimeValue t, ViewExp *vpt, IPoint2 *p, SnapInfo *snap);
DllExport Point3 _ReEvaluate(TimeValue t, OsnapHit *hit);
DllExport boolean IsActive();
DllExport void SetActive(int index, boolean state);
DllExport boolean GetActive(int index);
GraphicsWindow *m_hitgw;
//Point management.
//Some osnaps may want to maintain a list of potential hit points.
//Note that the points should be passed in in modeling space
DllExport void AddCandidate(Point3 *pt, int type = -1, int num = 0,...);
DllExport Point3 *GetCandidatePoint(int index);
DllExport void GetCandidateMesh(int index, HitMesh *m);
DllExport int GetCandidateType(int index);
// DllExport void AddCandidate(Point3 *pt);
DllExport void ClearCandidates();
DllExport int NumCandidates(){return point_candidates.Count();}
virtual DllExport Point3 ReEvaluate(TimeValue t, OsnapHit *hit, Object* pobj);
//Note: the following version uses an index into the candidate list
DllExport BOOL CheckPotentialHit(int ptindex, Point2 cursor);
//Note: the following version uses a remote matrix of points
DllExport BOOL CheckPotentialHit(Point3 *p, int ptindex, Point2 cursor);
int m_baseindex;//an index into the tool array
public:
DllExport Osnap();//constructor
DllExport virtual ~Osnap();
DllExport void Init();
virtual int numsubs(){return 1;}; //the number of subsnaps this guy has
virtual DllExport TCHAR *Category();//JH 01/04/98 {return NULL;}
virtual Class_ID ClassID() { return Class_ID( 0, 0); }
virtual BOOL UseCallbacks(){return FALSE;}
virtual int NumCallbacks(){return 0;}
virtual DllExport BOOL GetSupportedObject(INode *iNode, TimeValue t, ObjectState *os);
virtual TSTR *snapname(int index)=0; // the snaps name to be displayed in the UI
virtual TSTR *tooltip(int index){return NULL;} // the snaps name to be displayed in the UI
virtual boolean ValidInput(SClass_ID scid, Class_ID cid)=0;//the objects it supports
virtual OsnapMarker *GetMarker(int index)=0; // single object might contain subsnaps
virtual WORD HiliteMode(){return HILITE_NORMAL;}
// UI methods
virtual boolean BeginUI(HWND hwnd){return TRUE;}
virtual void EndUI(HWND hwnd){};
virtual HBITMAP getTools()=0;
virtual HBITMAP getMasks()=0;
virtual void Snap(Object* pobj, IPoint2 *p, TimeValue t){};
virtual BOOL HitTest(Object* pobj, IPoint2 *p, TimeValue t){return TRUE;}
virtual SnapCallback GetSnapCallback( int sub){ return NULL;}
virtual WORD AccelKey(int index)=0;
protected://data
IOsnapManager *theman;
// Point3Tab point_candidates; //this will hold the point candidates
CandidateTab point_candidates; //this will hold the point candidates
public://data
// INode *m_inode;
// ViewExp *m_vpt;
};
#endif // _OSNAP_H_