📄 brushtemplate.c
字号:
geFloat HalfLength = (geFloat)(pTemplate->Length/2);
Brush *b, *b2;
BrushList *MBList =BrushList_Create();
FaceList *fl;
Face *f;
geVec3d v, FaceVerts[4];
if( pTemplate->MakeRamp )
{
fl =FaceList_Create(5);
geVec3d_Set (&(FaceVerts[3]), -HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[2]), HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[1]), HalfWidth, HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[0]), -HalfWidth, HalfHeight, HalfLength);
f =Face_Create(4, FaceVerts, 0);
if(f)
{
FaceList_AddFace(fl, f);
}
geVec3d_Set (&(FaceVerts[3]), HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[2]), -HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[1]), -HalfWidth, -HalfHeight, -HalfLength);
geVec3d_Set (&(FaceVerts[0]), HalfWidth, -HalfHeight, -HalfLength);
f =Face_Create(4, FaceVerts, 0);
if(f)
{
FaceList_AddFace(fl, f);
}
geVec3d_Set (&(FaceVerts[3]), -HalfWidth, HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[2]), HalfWidth, HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[1]), HalfWidth, -HalfHeight, -HalfLength);
geVec3d_Set (&(FaceVerts[0]), -HalfWidth, -HalfHeight, -HalfLength);
f =Face_Create(4, FaceVerts, 0);
if(f)
{
FaceList_AddFace(fl, f);
}
geVec3d_Set (&(FaceVerts[2]), HalfWidth, HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[1]), HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[0]), HalfWidth, -HalfHeight, -HalfLength);
f =Face_Create(3, FaceVerts, 0);
if(f)
{
FaceList_AddFace(fl, f);
}
geVec3d_Set (&(FaceVerts[0]), -HalfWidth, HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[1]), -HalfWidth, -HalfHeight, HalfLength);
geVec3d_Set (&(FaceVerts[2]), -HalfWidth, -HalfHeight, -HalfLength);
f =Face_Create(3, FaceVerts, 0);
if(f)
{
FaceList_AddFace(fl, f);
}
b =Brush_Create(BRUSH_LEAF, fl, NULL);
}
else
{
float StairYSize =(geFloat)pTemplate->Height/(geFloat)pTemplate->NumberOfStairs;
float DZ =(geFloat)pTemplate->Length/(geFloat)pTemplate->NumberOfStairs;
float ZSize =(geFloat)pTemplate->Length;
BrushTemplate_Box BoxTemplate;
BoxTemplate.Solid = 0;
BoxTemplate.TCut = pTemplate->TCut;
BoxTemplate.Thickness = 0.0f;
BoxTemplate.XSizeTop = pTemplate->Width;
BoxTemplate.XSizeBot = pTemplate->Width;
BoxTemplate.YSize = StairYSize;
for(i=0;i < pTemplate->NumberOfStairs;i++)
{
BoxTemplate.ZSizeTop = ZSize;
BoxTemplate.ZSizeBot = ZSize;
BoxTemplate.TSheet = GE_FALSE; // nasty, nasty, nasty
b2 = BrushTemplate_CreateBox (&BoxTemplate);
ZSize -=DZ;
geVec3d_Set(&v, 0.0f, i*StairYSize, (i*DZ)/2);
Brush_Move(b2, &v);
BrushList_Append(MBList, b2);
}
b =Brush_Create(BRUSH_MULTI, NULL, MBList);
}
if(b)
{
Brush_SetSubtract(b, pTemplate->TCut);
}
return b;
}
void BrushTemplate_ArchDefaults (BrushTemplate_Arch *pArchTemplate)
{
pArchTemplate->NumSlits = 3;
pArchTemplate->Thickness = 150;
pArchTemplate->Width = 100;
pArchTemplate->Radius = 200;
pArchTemplate->WallSize = 16;
pArchTemplate->Style = 1; // 0=solid 1=hollow
pArchTemplate->EndAngle = 180.0f;
pArchTemplate->StartAngle = 0.0f;
pArchTemplate->TCut = GE_FALSE;
}
geBoolean BrushTemplate_WriteArch (const BrushTemplate_Arch *pArchTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "ArchTemplate") < 0) return GE_FALSE;
if (fprintf (f, "NumSlits %d\n", pArchTemplate->NumSlits) < 0) return GE_FALSE;
if (fprintf (f, "Thickness %f\n", pArchTemplate->Thickness) < 0) return GE_FALSE;
if (fprintf (f, "Width %f\n", pArchTemplate->Width) < 0) return GE_FALSE;
if (fprintf (f, "Radius %f\n", pArchTemplate->Radius) < 0) return GE_FALSE;
if (fprintf (f, "WallSize %f\n", pArchTemplate->WallSize) < 0) return GE_FALSE;
if (fprintf (f, "Style %d\n", pArchTemplate->Style) < 0) return GE_FALSE;
if (fprintf (f, "EndAngle %f\n", pArchTemplate->EndAngle) < 0) return GE_FALSE;
if (fprintf (f, "StartAngle %f\n", pArchTemplate->StartAngle) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pArchTemplate->TCut) < 0) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (disable:4100)
geBoolean BrushTemplate_LoadArch
(
BrushTemplate_Arch *pArchTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "ArchTemplate"))) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "NumSlits"), &pArchTemplate->NumSlits)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Thickness"), &pArchTemplate->Thickness)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Width"), &pArchTemplate->Width)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Radius"), &pArchTemplate->Radius)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "WallSize"), &pArchTemplate->WallSize)) return GE_FALSE;
if (pArchTemplate->WallSize < 1.0f)
{
pArchTemplate->WallSize = 1.0f;
}
if (!Parse3dt_GetInt (Parser, (*Expected = "Style"), &pArchTemplate->Style)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "EndAngle"), &pArchTemplate->EndAngle)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "StartAngle"), &pArchTemplate->StartAngle)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pArchTemplate->TCut)) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (default:4100)
void BrushTemplate_BoxDefaults (BrushTemplate_Box *pBoxTemplate)
{
pBoxTemplate->Solid = 1; // 0=solid 1=hollow
pBoxTemplate->TCut = GE_FALSE;
// emperically derived default sizes
pBoxTemplate->Thickness = 16.0f;
pBoxTemplate->XSizeBot = 512.0f;
pBoxTemplate->XSizeTop = 512.0f;
pBoxTemplate->YSize = 512.0f;
pBoxTemplate->ZSizeBot = 512.0f;
pBoxTemplate->ZSizeTop = 512.0f;
}
geBoolean BrushTemplate_WriteBox (const BrushTemplate_Box *pBoxTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "BoxTemplate") < 0) return GE_FALSE;
if (fprintf (f, "Solid %d\n", pBoxTemplate->Solid) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pBoxTemplate->TCut) < 0) return GE_FALSE;
if (fprintf (f, "TSheet %d\n", pBoxTemplate->TSheet) < 0) return GE_FALSE;
if (fprintf (f, "Thickness %f\n", pBoxTemplate->Thickness) < 0) return GE_FALSE;
if (fprintf (f, "XSizeBot %f\n", pBoxTemplate->XSizeBot) < 0) return GE_FALSE;
if (fprintf (f, "XSizeTop %f\n", pBoxTemplate->XSizeTop) < 0) return GE_FALSE;
if (fprintf (f, "YSize %f\n", pBoxTemplate->YSize) < 0) return GE_FALSE;
if (fprintf (f, "ZSizeBot %f\n", pBoxTemplate->ZSizeBot) < 0) return GE_FALSE;
if (fprintf (f, "ZSizeTop %f\n", pBoxTemplate->ZSizeTop) < 0) return GE_FALSE;
return GE_TRUE;
}
geBoolean BrushTemplate_LoadBox
(
BrushTemplate_Box *pBoxTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "BoxTemplate"))) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "Solid"), &pBoxTemplate->Solid)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pBoxTemplate->TCut)) return GE_FALSE;
if ((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor >= 29)))
{
if (!Parse3dt_GetInt (Parser, (*Expected = "TSheet"), &pBoxTemplate->TSheet)) return GE_FALSE;
}
else
{
pBoxTemplate->TSheet = 0;
}
if (!Parse3dt_GetFloat (Parser, (*Expected = "Thickness"), &pBoxTemplate->Thickness)) return GE_FALSE;
if (pBoxTemplate->Thickness < 1.0f)
{
pBoxTemplate->Thickness = 1.0f;
}
if (!Parse3dt_GetFloat (Parser, (*Expected = "XSizeBot"), &pBoxTemplate->XSizeBot)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "XSizeTop"), &pBoxTemplate->XSizeTop)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "YSize"), &pBoxTemplate->YSize)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "ZSizeBot"), &pBoxTemplate->ZSizeBot)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "ZSizeTop"), &pBoxTemplate->ZSizeTop)) return GE_FALSE;
return GE_TRUE;
}
void BrushTemplate_ConeDefaults (BrushTemplate_Cone *pConeTemplate)
{
pConeTemplate->Style = 1; // 0=solid 1=hollow
pConeTemplate->Width = 200;
pConeTemplate->Height = 300;
pConeTemplate->VerticalStrips = 8;
pConeTemplate->Thickness = 16;
pConeTemplate->TCut = GE_FALSE;
}
geBoolean BrushTemplate_WriteCone (const BrushTemplate_Cone *pConeTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "ConeTemplate") < 0) return GE_FALSE;
if (fprintf (f, "Style %d\n", pConeTemplate->Style) < 0) return GE_FALSE;
if (fprintf (f, "Width %f\n", pConeTemplate->Width) < 0) return GE_FALSE;
if (fprintf (f, "Height %f\n", pConeTemplate->Height) < 0) return GE_FALSE;
if (fprintf (f, "VerticalStrips %d\n", pConeTemplate->VerticalStrips) < 0) return GE_FALSE;
if (fprintf (f, "Thickness %f\n", pConeTemplate->Thickness) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pConeTemplate->TCut) < 0) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (disable:4100)
geBoolean BrushTemplate_LoadCone
(
BrushTemplate_Cone *pConeTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "ConeTemplate"))) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "Style"), &pConeTemplate->Style)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Width"), &pConeTemplate->Width)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Height"), &pConeTemplate->Height)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "VerticalStrips"), &pConeTemplate->VerticalStrips)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Thickness"), &pConeTemplate->Thickness)) return GE_FALSE;
if (pConeTemplate->Thickness < 1.0f)
{
pConeTemplate->Thickness = 1.0f;
}
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pConeTemplate->TCut)) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (default:4100)
void BrushTemplate_CylinderDefaults (BrushTemplate_Cylinder *pCylinderTemplate)
{
pCylinderTemplate->BotXOffset = 0.0;
pCylinderTemplate->BotXSize = 128.0;
pCylinderTemplate->BotZOffset = 0.0;
pCylinderTemplate->BotZSize = 128.0;
pCylinderTemplate->Solid = 1; // 0=solid 1=hollow
pCylinderTemplate->Thickness = 16.0;
pCylinderTemplate->TopXOffset = 0.0;
pCylinderTemplate->TopXSize = 128.0;
pCylinderTemplate->TopZOffset = 0.0;
pCylinderTemplate->TopZSize = 128.0;
pCylinderTemplate->VerticalStripes = 8;
pCylinderTemplate->YSize = 512.0;
pCylinderTemplate->RingLength = 3.0;
pCylinderTemplate->TCut = GE_FALSE;
}
geBoolean BrushTemplate_WriteCylinder (const BrushTemplate_Cylinder *pCylinderTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "CylinderTemplate") < 0) return GE_FALSE;
if (fprintf (f, "BotXOffset %f\n", pCylinderTemplate->BotXOffset) < 0) return GE_FALSE;
if (fprintf (f, "BotXSize %f\n", pCylinderTemplate->BotXSize) < 0) return GE_FALSE;
if (fprintf (f, "BotZOffset %f\n", pCylinderTemplate->BotZOffset) < 0) return GE_FALSE;
if (fprintf (f, "BotZSize %f\n", pCylinderTemplate->BotZSize) < 0) return GE_FALSE;
if (fprintf (f, "Solid %d\n", pCylinderTemplate->Solid) < 0) return GE_FALSE;
if (fprintf (f, "Thickness %f\n", pCylinderTemplate->Thickness) < 0) return GE_FALSE;
if (fprintf (f, "TopXOffset %f\n", pCylinderTemplate->TopXOffset) < 0) return GE_FALSE;
if (fprintf (f, "TopXSize %f\n", pCylinderTemplate->TopXSize) < 0) return GE_FALSE;
if (fprintf (f, "TopZOffset %f\n", pCylinderTemplate->TopZOffset) < 0) return GE_FALSE;
if (fprintf (f, "TopZSize %f\n", pCylinderTemplate->TopZSize) < 0) return GE_FALSE;
if (fprintf (f, "VerticalStripes %d\n", pCylinderTemplate->VerticalStripes) < 0) return GE_FALSE;
if (fprintf (f, "YSize %f\n", pCylinderTemplate->YSize) < 0) return GE_FALSE;
if (fprintf (f, "RingLength %f\n", pCylinderTemplate->RingLength) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pCylinderTemplate->TCut) < 0) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (disable:4100)
geBoolean BrushTemplate_LoadCylinder
(
BrushTemplate_Cylinder *pCylinderTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "CylinderTemplate"))) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "BotXOffset"), &pCylinderTemplate->BotXOffset)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "BotXSize"), &pCylinderTemplate->BotXSize)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "BotZOffset"), &pCylinderTemplate->BotZOffset)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "BotZSize"), &pCylinderTemplate->BotZSize)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "Solid"), &pCylinderTemplate->Solid)) return GE_FALSE;
if ((VersionMajor > 1) || ((VersionMajor == 1) && (VersionMinor > 22)))
{
if (!Parse3dt_GetFloat (Parser, (*Expected = "Thickness"), &pCylinderTemplate->Thickness)) return GE_FALSE;
if (pCylinderTemplate->Thickness < 1.0f)
{
pCylinderTemplate->Thickness = 1.0f;
}
}
if (!Parse3dt_GetFloat (Parser, (*Expected = "TopXOffset"), &pCylinderTemplate->TopXOffset)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "TopXSize"), &pCylinderTemplate->TopXSize)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "TopZOffset"), &pCylinderTemplate->TopZOffset)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "TopZSize"), &pCylinderTemplate->TopZSize)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "VerticalStripes"), &pCylinderTemplate->VerticalStripes)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "YSize"), &pCylinderTemplate->YSize)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "RingLength"), &pCylinderTemplate->RingLength)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pCylinderTemplate->TCut)) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (default:4100)
void BrushTemplate_SpheroidDefaults (BrushTemplate_Spheroid *pSpheroidTemplate)
{
pSpheroidTemplate->HorizontalBands = 4;
pSpheroidTemplate->VerticalBands = 8;
pSpheroidTemplate->YSize = 256.0;
pSpheroidTemplate->Solid = 1; // 0=solid 1=hollow
pSpheroidTemplate->Thickness = 16;
pSpheroidTemplate->TCut = GE_FALSE;
}
geBoolean BrushTemplate_WriteSpheroid (const BrushTemplate_Spheroid *pSpheroidTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "SpheroidTemplate") < 0) return GE_FALSE;
if (fprintf (f, "HorizontalBands %d\n", pSpheroidTemplate->HorizontalBands) < 0) return GE_FALSE;
if (fprintf (f, "VerticalBands %d\n", pSpheroidTemplate->VerticalBands) < 0) return GE_FALSE;
if (fprintf (f, "YSize %f\n", pSpheroidTemplate->YSize) < 0) return GE_FALSE;
if (fprintf (f, "Solid %d\n", pSpheroidTemplate->Solid) < 0) return GE_FALSE;
if (fprintf (f, "Thickness %f\n", pSpheroidTemplate->Thickness) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pSpheroidTemplate->TCut) < 0) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (disable:4100)
geBoolean BrushTemplate_LoadSpheroid
(
BrushTemplate_Spheroid *pSpheroidTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "SpheroidTemplate"))) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "HorizontalBands"), &pSpheroidTemplate->HorizontalBands)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "VerticalBands"), &pSpheroidTemplate->VerticalBands)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "YSize"), &pSpheroidTemplate->YSize)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "Solid"), &pSpheroidTemplate->Solid)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Thickness"), &pSpheroidTemplate->Thickness)) return GE_FALSE;
if (pSpheroidTemplate->Thickness < 1.0f)
{
pSpheroidTemplate->Thickness = 1.0f;
}
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pSpheroidTemplate->TCut)) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (default:4100)
void BrushTemplate_StaircaseDefaults (BrushTemplate_Staircase *pStaircaseTemplate)
{
pStaircaseTemplate->Height = 128.0;
pStaircaseTemplate->Length = 128.0;
pStaircaseTemplate->NumberOfStairs = 8;
pStaircaseTemplate->Width = 64.0;
pStaircaseTemplate->MakeRamp = GE_FALSE;
pStaircaseTemplate->TCut = GE_FALSE;
}
geBoolean BrushTemplate_WriteStaircase (const BrushTemplate_Staircase *pStaircaseTemplate, FILE *f)
{
if (fprintf (f, "%s\n", "StaircaseTemplate") < 0) return GE_FALSE;
if (fprintf (f, "Height %f\n", pStaircaseTemplate->Height) < 0) return GE_FALSE;
if (fprintf (f, "Length %f\n", pStaircaseTemplate->Length) < 0) return GE_FALSE;
if (fprintf (f, "NumberOfStairs %d\n", pStaircaseTemplate->NumberOfStairs) < 0) return GE_FALSE;
if (fprintf (f, "Width %f\n", pStaircaseTemplate->Width) < 0) return GE_FALSE;
if (fprintf (f, "MakeRamp %d\n", pStaircaseTemplate->MakeRamp) < 0) return GE_FALSE;
if (fprintf (f, "TCut %d\n", pStaircaseTemplate->TCut) < 0) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (disable:4100)
geBoolean BrushTemplate_LoadStaircase
(
BrushTemplate_Staircase *pStaircaseTemplate,
Parse3dt *Parser,
int VersionMajor,
int VersionMinor,
const char **Expected
)
{
if (!Parse3dt_ScanExpectingText (Parser, (*Expected = "StaircaseTemplate"))) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Height"), &pStaircaseTemplate->Height)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Length"), &pStaircaseTemplate->Length)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "NumberOfStairs"), &pStaircaseTemplate->NumberOfStairs)) return GE_FALSE;
if (!Parse3dt_GetFloat (Parser, (*Expected = "Width"), &pStaircaseTemplate->Width)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "MakeRamp"), &pStaircaseTemplate->MakeRamp)) return GE_FALSE;
if (!Parse3dt_GetInt (Parser, (*Expected = "TCut"), &pStaircaseTemplate->TCut)) return GE_FALSE;
return GE_TRUE;
}
#pragma warning (default:4100)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -