This means that CopyEntity will still increase the surface count (although I could be wrong).
So far as I can tell, you're wrong. Compare the surface handle of one copied entity to another and you will find them equal. Contrast this with those of a copied mesh.
Graphics3D 800,600,0,2
SetBuffer BackBuffer()
cam=CreateCamera()
PositionEntity cam,0,0,-20
galacticCentralPoint=CreatePivot()
EntityParent cam,galacticCentralPoint
light=CreateLight(1,galacticCentralPoint)
PositionEntity light,10,10,0
objectTemplate=CreateCube()
objectTexture=CreateTexture(32,32)
SetBuffer TextureBuffer(objectTexture)
Color 100,100,200
Rect 0,0,32,32,True
Color 100,200,100
Line 0,0,31,0 : Line 0,1,0,31
ScaleTexture objectTexture,.2,.2
EntityTexture objectTemplate,objectTexture
HideEntity objectTemplate
SetBuffer BackBuffer()
Type copy
Field mesh
Field xRot#
Field yRot#
Field zRot#
Field description$
End Type
For i=0 To 9
currentCopy.copy=New copy
currentCopy\mesh=CopyEntity(objectTemplate)
currentCopy\xRot=Rnd(-1,1)
currentCopy\yRot=Rnd(-1,1)
currentCopy\zRot=Rnd(-1,1)
PositionEntity currentCopy\mesh,Rnd(-10,10),Rnd(-10,10),Rnd(-10,10)
currentCopy\description$="Copied Entity"
Next
For i=0 To 9
currentCopy.copy=New copy
currentCopy\mesh=CopyMesh(objectTemplate)
currentCopy\xRot=Rnd(-1,1)
currentCopy\yRot=Rnd(-1,1)
currentCopy\zRot=Rnd(-1,1)
PositionEntity currentCopy\mesh,Rnd(-10,10),Rnd(-10,10),Rnd(-10,10)
EntityTexture currentCopy\mesh,objectTexture
currentCopy\description$="Copied Mesh"
Next
While Not KeyHit(1)
For currentCopy.copy=Each copy
TurnEntity currentCopy\mesh,currentCopy\xRot,currentCopy\yRot,currentCopy\zRot
Next
TurnEntity galacticCentralPoint,0,1,0
PointEntity cam,galacticCentralPoint
RenderWorld
i=30
Text 10,0,"Surface Count / Handle of first surface / Nature of object"
Text 10,i,CountSurfaces(objectTemplate)+" surface(s) ("+GetSurface(objectTemplate,1)+") Template Entity"
For currentCopy.copy=Each copy
i=i+20
Text 10,i,CountSurfaces(currentCopy\mesh)+" surface(s) ("+GetSurface(currentCopy\mesh,1)+") "+currentCopy\description$
Next
Flip
Wend
This is how I'm keeping the surface count down in
Ice-Teroids without resorting to manual vertex manipulation.
EDIT:
Also, the surface handle remains equal even if you apply different textures to each copied entity:
Graphics3D 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
cam=CreateCamera()
PositionEntity cam,0,0,-20
galacticCentralPoint=CreatePivot()
EntityParent cam,galacticCentralPoint
light=CreateLight(1,galacticCentralPoint)
PositionEntity light,10,10,0
objectTemplate=CreateCube()
HideEntity objectTemplate
Dim textureArray(3)
For i=0 To 3
textureArray(i)=CreateTexture(32,32)
SetBuffer TextureBuffer(textureArray(i))
Color i*50,i*50,i*50
Rect 0,0,32,32,True
Color 100,200,100
Line 0,0,31,0 : Line 0,1,0,31
ScaleTexture textureArray(i),.2,.2
Next
SetBuffer BackBuffer()
Type copy
Field mesh
Field xRot#
Field yRot#
Field zRot#
Field description$
End Type
For i=0 To 9
currentCopy.copy=New copy
currentCopy\mesh=CopyEntity(objectTemplate)
currentCopy\xRot=Rnd(-1,1)
currentCopy\yRot=Rnd(-1,1)
currentCopy\zRot=Rnd(-1,1)
PositionEntity currentCopy\mesh,Rnd(-10,10),Rnd(-10,10),Rnd(-10,10)
currentCopy\description$="Copied Entity"
EntityTexture currentCopy\mesh,textureArray(Rand(0,3))
Next
For i=0 To 9
currentCopy.copy=New copy
currentCopy\mesh=CopyMesh(objectTemplate)
currentCopy\xRot=Rnd(-1,1)
currentCopy\yRot=Rnd(-1,1)
currentCopy\zRot=Rnd(-1,1)
PositionEntity currentCopy\mesh,Rnd(-10,10),Rnd(-10,10),Rnd(-10,10)
currentCopy\description$="Copied Mesh"
EntityTexture currentCopy\mesh,textureArray(Rand(0,3))
Next
While Not KeyHit(1)
For currentCopy.copy=Each copy
TurnEntity currentCopy\mesh,currentCopy\xRot,currentCopy\yRot,currentCopy\zRot
Next
TurnEntity galacticCentralPoint,0,1,0
PointEntity cam,galacticCentralPoint
RenderWorld
i=30
Text 10,0,"Surface Count / Handle of first surface / Nature of object"
Text 10,i,CountSurfaces(objectTemplate)+" surface(s) ("+GetSurface(objectTemplate,1)+") Template Entity"
For currentCopy.copy=Each copy
i=i+20
Text 10,i,CountSurfaces(currentCopy\mesh)+" surface(s) ("+GetSurface(currentCopy\mesh,1)+") "+currentCopy\description$
Next
Flip
Wend