d_a_wind_tag start

This commit is contained in:
Jasper St. Pierre
2024-06-19 21:41:04 -07:00
parent 944eb44668
commit ee52d98f78
6 changed files with 361 additions and 52 deletions
+49 -9
View File
@@ -2,6 +2,13 @@
#define D_A_WIND_TAG_H
#include "f_op/f_op_actor.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_point_wind.h"
#include "d/d_cc_d.h"
#include "m_Do/m_Do_ext.h"
class JPABaseEmitter;
class dPath;
namespace daWindTag {
static BOOL CheckCreateHeap(fopAc_ac_c*);
@@ -11,28 +18,61 @@ namespace daWindTag {
void getCurLength() const {}
void getMaxLength() const {}
BOOL _delete();
void CreateHeap();
bool _delete();
BOOL CreateHeap();
void CreateInit();
void set_wind_angle();
s32 _create();
void set_mtx();
void checkSizeSpecialBig();
bool checkSizeSpecialBig();
void set_wind_se_sub(unsigned long, cXyz*);
void set_wind_se();
BOOL _execute();
bool _execute();
void path_move();
void set_next_pnt();
BOOL _draw();
bool _draw();
void MoveEmitter();
static const f32 mData[];
static const char* m_arcname[];
static s16 m_bdlidx[];
static s16 m_heapsize[];
static s16 m_bckidx[];
static s16 m_btkidx[];
static s16 m_btkidx2[];
static f32 m_cullsize_far;
static f32 m_ef_cullsize_far;
public:
/* Place member variables here */
/* 0x290 */ char pad290[0x208]; /* Placeholder padding */
/* 0x498 */ f32 unk498;
};
/* 0x290 */ dCcD_Stts mStts;
/* 0x2CC */ dCcD_Cps mCps;
/* 0x404 */ cM3dGCpsS mCpsS;
/* 0x420 */ request_of_phase_process_class mPhs;
/* 0x428 */ J3DModel* mpModel;
/* 0x42C */ mDoExt_btkAnm mBtkAnm0;
/* 0x440 */ mDoExt_btkAnm mBtkAnm1;
/* 0x454 */ mDoExt_bckAnm mBckAnm;
/* 0x464 */ dPointWind_c mPointWind;
/* 0x494 */ u8 mType;
/* 0x498 */ f32 mOffsY;
/* 0x49C */ f32 field_0x49c;
/* 0x4A0 */ JPABaseEmitter* mpEmitter;
/* 0x4A4 */ GXColor mEfColor;
/* 0x4A8 */ dKy_tevstr_c mEfTevStr;
/* 0x558 */ cXyz mSePos;
/* 0x564 */ cXyz mTargetPos;
/* 0x570 */ dPath* mpPath;
/* 0x574 */ u8 mPathId;
/* 0x575 */ s8 mCurPathPoint;
/* 0x576 */ s8 mPathPointDir;
/* 0x578 */ s32 mSwNo;
/* 0x57C */ u8 field_0x57c;
/* 0x57D */ u8 field_0x57d;
/* 0x57E */ bool mbDraw;
/* 0x57F */ u8 field_0x57f;
/* 0x580 */ uint mLevelSeID;
};
}; // namespace daWindTag
#endif /* D_A_WIND_TAG_H */
+18 -2
View File
@@ -2,6 +2,10 @@
#define D_A_WINDMILL_H
#include "f_op/f_op_actor.h"
#include "d/d_cc_d.h"
#include "SSystem/SComponent/c_phase.h"
class dBgW;
class daWindMill_c : public fopAc_ac_c {
public:
@@ -10,7 +14,7 @@ public:
void getType() const {}
BOOL _delete();
void CreateHeap();
BOOL CreateHeap();
void CreateInit();
void search_wind();
s32 _create();
@@ -22,9 +26,21 @@ public:
BOOL _draw();
static const s16 m_max_rot_speed[];
static const char* m_arcname[];
public:
/* Place member variables here */
/* 0x0290 */ request_of_phase_process_class mPhs;
/* 0x0298 */ J3DModel* mpModel;
/* 0x029C */ dCcD_Stts mStts;
/* 0x02D8 */ dCcD_Sph mSph[9];
/* 0x06D4 */ dCcD_Cps mCps[4];
/* 0x1244 */ f32 m1244[28];
/* 0x12B4 */ dBgW* mpBgW;
/* 0x12B8 */ Mtx mMtx;
/* 0x12E8 */ dCcD_Cyl mCyl;
/* 0x1418 */ u8 mType;
/* 0x141A */ u16 mAngle[3];
/* 0x1420 */ u32 mWindTagId;
};
#endif /* D_A_WINDMILL_H */
+1 -1
View File
@@ -52,7 +52,7 @@ static dCcD_SrcCps l_cps_src = {
{
/* P0 */ 0.0f, 0.0f, 0.0f,
/* P1 */ 0.0f, 0.0f, 0.0f,
/* Hieght */ 100.0f,
/* Height */ 100.0f,
},
};
+1 -1
View File
@@ -189,7 +189,7 @@ BOOL daToge_c::_execute() {
daWindTag::daWindTag_c* pActor = (daWindTag::daWindTag_c*)fopAcM_SearchByID(mWindTagId);
if (pActor != NULL) {
if (pActor->unk498 > 0.0f) {
if (pActor->mOffsY > 0.0f) {
if (mEventState != 4) {
mEventState = 3;
}
+268 -25
View File
@@ -4,76 +4,319 @@
//
#include "d/actor/d_a_wind_tag.h"
#include "d/res/res_yaflw00.h"
#include "d/res/res_ybgaf00.h"
#include "f_op/f_op_camera.h"
#include "f_op/f_op_kankyo_mng.h"
#include "d/d_cc_d.h"
#include "d/d_com_inf_game.h"
#include "d/d_level_se.h"
#include "d/d_path.h"
#include "d/d_procname.h"
namespace daWindTag {
dCcD_SrcCps l_cps_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ AT_TYPE_WIND,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ AT_SPRM_SET | AT_SPRM_VS_PLAYER | AT_SPRM_VS_OTHER,
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt SPrm */ G_AT_SPRM_NO_HIT_MARK,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg SPrm */ G_TG_SPRM_NO_HIT_MARK,
/* SrcGObjCo SPrm */ 0,
},
// cM3dGCpsS
{
/* P0 */ 0.0f, 0.0f, 0.0f,
/* P1 */ 0.0f, 0.0f, 0.0f,
/* Height */ 200.0f,
},
};
}
const char *daWindTag::daWindTag_c::m_arcname[] = { "Yaflw00", "Ybgaf00" };
s16 daWindTag::daWindTag_c::m_bdlidx[] = { YAFLW00_BDL_YAFLW00, YBGAF00_BDL_YBGAF00 };
s16 daWindTag::daWindTag_c::m_heapsize[] = { 0x0C40, 0x0C40 };
s16 daWindTag::daWindTag_c::m_bckidx[] = { YAFLW00_BCK_YAFLW00, YBGAF00_BCK_YBGAF00 };
s16 daWindTag::daWindTag_c::m_btkidx[] = { YAFLW00_BTK_YAFLW00_01, YBGAF00_BTK_YBGAF00_01 };
s16 daWindTag::daWindTag_c::m_btkidx2[] = { YAFLW00_BTK_YAFLW00_02, YBGAF00_BTK_YBGAF00_02 };
f32 daWindTag::daWindTag_c::m_cullsize_far = 4.0f;
f32 daWindTag::daWindTag_c::m_ef_cullsize_far = 2.0f;
/* 00000078-000000F0 .text _delete__Q29daWindTag11daWindTag_cFv */
BOOL daWindTag::daWindTag_c::_delete() {
/* Nonmatching */
bool daWindTag::daWindTag_c::_delete() {
if (mpEmitter != NULL) {
mpEmitter->becomeInvalidEmitter();
mpEmitter = NULL;
}
dComIfG_resDelete(&mPhs, m_arcname[mType]);
mPointWind.set_pwind_delete();
return true;
}
/* 000000F0-00000110 .text CheckCreateHeap__9daWindTagFP10fopAc_ac_c */
BOOL daWindTag::CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
BOOL daWindTag::CheckCreateHeap(fopAc_ac_c* i_ac) {
return ((daWindTag::daWindTag_c*)i_ac)->CreateHeap();
}
/* 00000110-000003E4 .text CreateHeap__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::CreateHeap() {
BOOL daWindTag::daWindTag_c::CreateHeap() {
/* Nonmatching */
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname[mType], m_bdlidx[mType]);
JUT_ASSERT(0x16A, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222);
if (mpModel == NULL)
return FALSE;
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname[mType], m_btkidx[mType]);
JUT_ASSERT(0x17A, pbtk != NULL);
if (!mBtkAnm0.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false, 0))
return FALSE;
pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname[mType], m_btkidx2[mType]);
JUT_ASSERT(0x17A, pbtk != NULL);
if (!mBtkAnm1.init(modelData, pbtk, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false, 0))
return FALSE;
J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(m_arcname[mType], m_bckidx[mType]);
JUT_ASSERT(0x192, pbck != NULL);
if (!mBckAnm.init(modelData, pbck, TRUE, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, false))
return FALSE;
return TRUE;
}
/* 000003E4-00000828 .text CreateInit__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::CreateInit() {
/* Nonmatching */
mbDraw = true;
if (((home.angle.z >> 4) & 0x0F) == 1) {
mbDraw = false;
}
field_0x57f = false;
if ((home.angle.z & 0x0F) == 1) {
field_0x57f = true;
}
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
f32 radius = scale.x * mData[mType * 2];
fopAcM_setCullSizeBox(this, -radius, 0.0f, -radius, radius, 0.0f, radius);
fopAcM_setCullSizeFar(this, m_cullsize_far);
mStts.Init(0xFF, 0xFF, this);
mCps.Set(l_cps_src);
mCps.SetStts(&mStts);
field_0x49c = scale.y;
mSwNo = fopAcM_GetParam(this) >> 24;
field_0x57c = fopAcM_isSwitch(this, mSwNo);
bool state;
if (((fopAcM_GetParam(this) >> 23) & 1) == 0) {
state = (mSwNo != 0xFF && !fopAcM_isSwitch(this, mSwNo));
} else {
state = (mSwNo != 0xFF && fopAcM_isSwitch(this, mSwNo));
}
if (mSwNo == 0xFF | state) { // nice bug
mOffsY = field_0x49c * mData[mType * 2 + 1];
mBtkAnm1.setFrame(mBtkAnm1.getEndFrame());
} else {
mOffsY = 0.0f;
mBtkAnm1.setFrame(0.0f);
}
set_wind_angle();
mPathId = (fopAcM_GetParam(this) >> 8) & 0xFF;
if (mPathId != 0xFF) {
mpPath = dPath_GetRoomPath(mPathId, fopAcM_GetRoomNo(this));
if (mpPath != NULL) {
mPathPointDir = 1;
mCurPathPoint = 1;
mTargetPos = mpPath->mpPnt[mCurPathPoint].mPos;
current.pos = mpPath->mpPnt[0].mPos;
speedF = 10.0f + ((fopAcM_GetParam(this) >> 16) & 0x1F);
} else {
mPathId = 0xFF;
}
}
mPointWind.set_pwind_init(&mCpsS);
mLevelSeID = fopKyM_create(PROC_LEVEL_SE, checkSizeSpecialBig() ? 0x701e : 0x701d, &eyePos);
mpEmitter = NULL;
cXyz efScale(scale.x, scale.x, scale.x);
if (field_0x57f) {
g_env_light.settingTevStruct(TEV_TYPE_BG1, &current.pos, &mEfTevStr);
mEfColor.r = mEfTevStr.mColorC0.r;
mEfColor.g = mEfTevStr.mColorC0.g;
mEfColor.b = mEfTevStr.mColorC0.b;
mEfColor.a = mEfTevStr.mColorC0.a;
mpEmitter = dComIfGp_particle_set(0x8290, &current.pos, NULL, &scale, 0xFF, NULL, fopAcM_GetRoomNo(this), &mEfColor);
if (mpEmitter != NULL)
mpEmitter->setGlobalScale(efScale);
}
current.angle.z = 0;
home.angle.z = 0;
dKy_tevstr_init(&mEfTevStr, fopAcM_GetRoomNo(this), 0xFF);
}
/* 00000828-000008D4 .text set_wind_angle__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::set_wind_angle() {
/* Nonmatching */
mCpsS.mStart = current.pos;
mCpsS.mRadius = scale.x * mData[mType * 2];
set_mtx();
mCps.cM3dGCps::Set(mCpsS);
mCps.CalcAtVec();
}
/* 000008D4-0000099C .text _create__Q29daWindTag11daWindTag_cFv */
s32 daWindTag::daWindTag_c::_create() {
/* Nonmatching */
fopAcM_SetupActor(this, daWindTag_c);
mType = (fopAcM_GetParam(this) >> 21) & 0x03;
s32 rt = dComIfG_resLoad(&mPhs, m_arcname[mType]);
if (rt == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, m_heapsize[mType]))
return cPhs_ERROR_e;
CreateInit();
}
return rt;
}
/* 00000E60-00000F74 .text set_mtx__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::set_mtx() {
/* Nonmatching */
f32 offsY = mOffsY;
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(current.angle);
mDoMtx_stack_c::transM(0.0f, offsY, 0.0f);
mDoMtx_stack_c::multVec(&cXyz::Zero, &mCpsS.mEnd);
if (current.angle.x == 0) {
mCpsS.mEnd.x = current.pos.x;
mCpsS.mEnd.z = current.pos.z;
}
mpModel->setBaseScale(scale);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(current.angle);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 00000F74-00000F88 .text checkSizeSpecialBig__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::checkSizeSpecialBig() {
/* Nonmatching */
bool daWindTag::daWindTag_c::checkSizeSpecialBig() {
if (mType == 1)
return true;
return false;
}
/* 00000F88-00001044 .text set_wind_se_sub__Q29daWindTag11daWindTag_cFUlP4cXyz */
void daWindTag::daWindTag_c::set_wind_se_sub(unsigned long, cXyz*) {
/* Nonmatching */
void daWindTag::daWindTag_c::set_wind_se_sub(u32, cXyz* pos) {
if (mLevelSeID != fpcM_ERROR_PROCESS_ID_e) {
dLevelSe_c* se = (dLevelSe_c*)fopKyM_SearchByID(mLevelSeID);
if (se != NULL) {
s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
se->setReverb(100, reverb);
se->mPos = *pos;
if (mOffsY < 1.0f)
se->mFlag |= 0x08;
else
se->mFlag &= ~0x08;
}
}
}
/* 00001044-000011CC .text set_wind_se__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::set_wind_se() {
/* Nonmatching */
f32 radius = scale.x * mData[mType * 2];
camera_class* camera = dComIfGp_getCamera(0);
cM3dGCps cps;
cM3dGSph camSph;
cps.SetR(radius);
cps.SetStartEnd(mCpsS.mStart, mCpsS.mEnd);
camSph.SetC(camera->mLookat.mEye);
camSph.SetR(1.0f);
Vec cross;
if (cM3d_Cross_CpsSph(cps, camSph, &cross)) {
mSePos = eyePos;
set_wind_se_sub(0, &mSePos);
} else {
cXyz pos = eyePos;
cps.NearPos(pos, &mSePos);
set_wind_se_sub(0, &mSePos);
}
}
/* 00001234-000015C8 .text _execute__Q29daWindTag11daWindTag_cFv */
BOOL daWindTag::daWindTag_c::_execute() {
bool daWindTag::daWindTag_c::_execute() {
/* Nonmatching */
}
/* 000015C8-0000161C .text path_move__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::path_move() {
/* Nonmatching */
if (mPathId != 0xFF && cLib_chasePos(&current.pos, mTargetPos, speedF))
set_next_pnt();
}
/* 0000161C-00001700 .text set_next_pnt__Q29daWindTag11daWindTag_cFv */
void daWindTag::daWindTag_c::set_next_pnt() {
/* Nonmatching */
if (mPathId == 0xFF)
return;
mCurPathPoint += mPathPointDir;
if (mpPath->mLoops & 1) {
if (mCurPathPoint > mpPath->m_num - 1) {
mCurPathPoint = 0;
} else if (mCurPathPoint < 0) {
mCurPathPoint = mpPath->m_num - 1;
}
} else {
if (mCurPathPoint > mpPath->m_num - 1) {
mPathPointDir = -1;
mCurPathPoint = mpPath->m_num - 2;
} else if (mCurPathPoint < 0) {
mPathPointDir = 1;
mCurPathPoint = 0;
}
}
mTargetPos = mpPath->mpPnt[mCurPathPoint].mPos;
}
/* 00001700-00001814 .text _draw__Q29daWindTag11daWindTag_cFv */
BOOL daWindTag::daWindTag_c::_draw() {
/* Nonmatching */
bool daWindTag::daWindTag_c::_draw() {
if (!mbDraw)
return TRUE;
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
g_env_light.setLightTevColorType(mpModel, &tevStr);
mBtkAnm0.entry(mpModel->getModelData());
mBtkAnm1.entry(mpModel->getModelData());
mBckAnm.entry(mpModel->getModelData());
mDoExt_modelUpdateDL(mpModel);
if (mpEmitter != NULL) {
g_env_light.settingTevStruct(TEV_TYPE_BG1, &current.pos, &mEfTevStr);
mEfColor.r = mEfTevStr.mColorC0.r;
mEfColor.g = mEfTevStr.mColorC0.g;
mEfColor.b = mEfTevStr.mColorC0.b;
mpEmitter->setGlobalPrmColor(mEfColor.r, mEfColor.g, mEfColor.b);
}
return TRUE;
}
/* 00001814-00001AA4 .text MoveEmitter__Q29daWindTag11daWindTag_cFv */
@@ -82,28 +325,28 @@ void daWindTag::daWindTag_c::MoveEmitter() {
}
/* 00001B00-00001B20 .text daWindTag_Create__FPv */
static s32 daWindTag_Create(void*) {
/* Nonmatching */
static s32 daWindTag_Create(void* i_ac) {
return ((daWindTag::daWindTag_c*)i_ac)->_create();
}
/* 00001B20-00001B44 .text daWindTag_Delete__FPv */
static BOOL daWindTag_Delete(void*) {
/* Nonmatching */
static BOOL daWindTag_Delete(void* i_ac) {
return ((daWindTag::daWindTag_c*)i_ac)->_delete();
}
/* 00001B44-00001B68 .text daWindTag_Draw__FPv */
static BOOL daWindTag_Draw(void*) {
/* Nonmatching */
static BOOL daWindTag_Draw(void* i_ac) {
return ((daWindTag::daWindTag_c*)i_ac)->_draw();
}
/* 00001B68-00001B8C .text daWindTag_Execute__FPv */
static BOOL daWindTag_Execute(void*) {
/* Nonmatching */
static BOOL daWindTag_Execute(void* i_ac) {
return ((daWindTag::daWindTag_c*)i_ac)->_execute();
}
/* 00001B8C-00001B94 .text daWindTag_IsDelete__FPv */
static BOOL daWindTag_IsDelete(void*) {
/* Nonmatching */
return TRUE;
}
static actor_method_class daWindTagMethodTable = {
+24 -14
View File
@@ -5,20 +5,26 @@
#include "d/actor/d_a_windmill.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_com_inf_game.h"
#include "d/d_procname.h"
const char* daWindMill_c::m_arcname[] = { "Hpu1", "Hpu2" };
/* 00000078-000000E8 .text _delete__12daWindMill_cFv */
BOOL daWindMill_c::_delete() {
/* Nonmatching */
if (heap != NULL && mpBgW != NULL)
dComIfG_Bgsp()->Release(mpBgW);
dComIfG_resDelete(&mPhs, m_arcname[mType]);
return TRUE;
}
/* 000000E8-00000108 .text CheckCreateHeap__FP10fopAc_ac_c */
static BOOL CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL CheckCreateHeap(fopAc_ac_c* i_ac) {
return ((daWindMill_c*)i_ac)->CreateHeap();
}
/* 00000108-000002A0 .text CreateHeap__12daWindMill_cFv */
void daWindMill_c::CreateHeap() {
BOOL daWindMill_c::CreateHeap() {
/* Nonmatching */
}
@@ -34,7 +40,11 @@ static BOOL nodeCallBack(J3DNode*, int) {
/* 00000608-00000670 .text search_wind__12daWindMill_cFv */
void daWindMill_c::search_wind() {
/* Nonmatching */
fopAc_ac_c* windTag = fopAcM_SearchByName(PROC_WindTag);
if (windTag != NULL)
mWindTagId = fopAcM_GetID(windTag);
else
mWindTagId = fpcM_ERROR_PROCESS_ID_e;
}
/* 00000670-00000804 .text _create__12daWindMill_cFv */
@@ -73,28 +83,28 @@ BOOL daWindMill_c::_draw() {
}
/* 000017A4-000017C4 .text daWindMill_Create__FPv */
static s32 daWindMill_Create(void*) {
/* Nonmatching */
static s32 daWindMill_Create(void* i_ac) {
return ((daWindMill_c*)i_ac)->_create();
}
/* 000017C4-000017E8 .text daWindMill_Delete__FPv */
static BOOL daWindMill_Delete(void*) {
/* Nonmatching */
static BOOL daWindMill_Delete(void* i_ac) {
return ((daWindMill_c*)i_ac)->_delete();
}
/* 000017E8-0000180C .text daWindMill_Draw__FPv */
static BOOL daWindMill_Draw(void*) {
/* Nonmatching */
static BOOL daWindMill_Draw(void* i_ac) {
return ((daWindMill_c*)i_ac)->_draw();
}
/* 0000180C-00001830 .text daWindMill_Execute__FPv */
static BOOL daWindMill_Execute(void*) {
/* Nonmatching */
static BOOL daWindMill_Execute(void* i_ac) {
return ((daWindMill_c*)i_ac)->_execute();
}
/* 00001830-00001838 .text daWindMill_IsDelete__FPv */
static BOOL daWindMill_IsDelete(void*) {
/* Nonmatching */
return TRUE;
}
static actor_method_class daWindMillMethodTable = {