1) There is a file named "entities.def" under 3D World Studio folder. Open it with notepad and add custom entites. Like;
2) Select the brush or mesh you want to and press ALT+Enter or open it's properties window. Change it's name (e.g. Wall_Col) and use the sample code below. (It's my world loading code in one of my projects)
@pointclass enemy : "sprites\enemy" [ ]
2) Select the brush or mesh you want to and press ALT+Enter or open it's properties window. Change it's name (e.g. Wall_Col) and use the sample code below. (It's my world loading code in one of my projects)
Function LoadWorld( file$ ) map=LoadAnimMesh( file ) If Not map Return world = CreatePivot() meshes = CreatePivot( world ) renderbrushes = CreateMesh( world ) collisionbrushes = CreatePivot( world ) pointentities = CreatePivot( world ) solidentities = CreatePivot( world ) EntityType collisionbrushes, COLLISIONTYPE_BRUSH For c = 1 To CountChildren( map ) node = GetChild( map, c ) classname$ = Lower( KeyValue ( node, "classname" ) ) DebugLog "Loading " + Chr( 34 ) + classname + Chr( 34 ) + "..." Select classname ;=============================================================================== ;Map Geometry ;=============================================================================== Case "mesh" EntityParent node, meshes c = c - 1 EntityType node, COLLISIONTYPE_MESH Case "terrain" EntityType node, COLLISIONTYPE_BRUSH EntityParent node, collisionbrushes c = c - 1 Case "brush" RotateMesh node, EntityPitch( node ), EntityYaw( node ), EntityRoll( node ) PositionMesh node, EntityX( node ), EntityY( node ), EntityZ( node ) AddMesh node, renderbrushes EntityAlpha node, 0 EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 0 EntityParent node, collisionbrushes c = c - 1 ;=============================================================================== ;Solid Entities ;=============================================================================== ;Invisible collision brush Case "field_hit" EntityParent node, collisionbrushes EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 0 c = c - 1 ;Border Brush 1 Case "border1" EntityParent node, collisionbrushes EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 1 EntityBlend node, 3 borderAnimTexture1.tAnimTexture = AnimTextureNew( "..\Media\Model\border.png", node, 256, 0, 15, 1.4 ) c = c - 1 ;Border Brush 2 Case "border2" EntityParent node, collisionbrushes EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 1 EntityBlend node, 3 borderAnimTexture2.tAnimTexture = AnimTextureNew( "..\Media\Model\border.png", node, 256, 0, 15, 1.4 ) c = c - 1 ;Border Brush 3 Case "border3" EntityParent node, collisionbrushes EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 1 EntityBlend node, 3 borderAnimTexture3.tAnimTexture = AnimTextureNew( "..\Media\Model\border.png", node, 256, 0, 15, 1.4 ) c = c - 1 ;Border Brush 4 Case "border4" EntityParent node, collisionbrushes EntityType node, COLLISIONTYPE_BRUSH EntityAlpha node, 1 EntityBlend node, 3 borderAnimTexture4.tAnimTexture = AnimTextureNew( "..\Media\Model\border.png", node, 256, 0, 15, 1.4 ) c = c - 1 ;Nebula brush Case "nebula" EntityParent node, collisionbrushes EntityBlend node, 3 EntityFX node, 1 c = c - 1 ;=============================================================================== ;Point Entities ;=============================================================================== Case "playerstart" angles$ = KeyValue( node, "angles", "0 0 0" ) pitch# = Piece( angles, 1, " " ) yaw# = Piece( angles, 2, " ") roll# = Piece( angles, 3, " ") spawnX = EntityX( node ) spawnY = EntityY( node ) spawnZ = EntityZ( node ) ;=============================================================================== ;Custom Entities ;=============================================================================== Case "planet1" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet1.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet2" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet2.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet3" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet3.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet4" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet4.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet5" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet5.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet6" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet6.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "planet7" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Planet.tPlanet = PlanetNew( CreateQuad(), "..\Media\Model\planet7.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, .02 ) Case "asteroid1" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Asteroid.tAsteroid = AsteroidNew( CreateQuad(), "..\Media\Model\asteroid1.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, Rnd(-1, 1), .2 ) Case "asteroid2" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Asteroid.tAsteroid = AsteroidNew( CreateQuad(), "..\Media\Model\asteroid2.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, Rnd(-1, 1), .2 ) Case "asteroid3" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Asteroid.tAsteroid = AsteroidNew( CreateQuad(), "..\Media\Model\asteroid3.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, Rnd(-1, 1), .2 ) Case "convoy" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Convoy.tConvoy = ConvoyNew( CreateQuad(), "..\Media\Model\convoy.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ, 1 ) Case "debris" scale$ = KeyValue( node, "scale", "0 0 0" ) scaleX# = Piece( scale, 1, " " ) scaleY# = Piece( scale, 2, " " ) scaleZ# = Piece( scale, 3, " " ) Debris.tDebris = DebrisNew( LoadMesh( "..\Media\Model\Debris.b3d" ), "..\Media\Model\debristex.dds", EntityX(node), EntityY(node), EntityZ(node), scaleX, scaleY, scaleZ ) ;=============================================================================== ;Enemy Entities ;=============================================================================== End Select Next FreeEntity map Return world End Function