/* Cel 3d Loader - october.97 - par Sylvain Huet */ typedef Anchor=objAnchor [H3d HMat3d S I] | posAnchor [S [I I I] [I I I]];; typeof anchors=[[S [Anchor r1]] r1];; struct File3d= [nameFile3d:S,posFile3d:[[I I I][I I I]], objFile3d:[[S S] r1],pickFile3d:[[S [I I I][I I I]] r1],obbFile3d:[S r1], linkFile3d:[[S S S I Anchor] r1], matFile3d:[[S S] r1], transmatFile3d:[[S I] r1], nolightFile3d:[S r1],scaleFile3d:[[S I] r1] ]mkFile3d;; struct Cel3d= [nameCel3d:S,backCel3d:I,clipCel3d:I,fogCel3d:I,focalCel3d:F,bufCel3d:I, iposCel3d:[[S [I I I] [I I I]]r1],anchCel3d:[[S [S r1]]r1], filesCel3d:[File3d r1],colCel3d:[S I I],gravCel3d:I, lightCel3d:[S [I I I] [I I I]],dummiesCel3d:[[S [I I I] [I I I] [[S S S I Anchor] r1]]r1], darkbaseCel3d:S ]mkCel3d;; var defaultAv="default";; fun anchbyn(x,n)=let x->[a _] in !strcmp a n;; /* parsing routines */ fun searchpoint(s)= let strlen s->l in let 0-> i in (while i