Turning an object into an extended type?
BlitzMax Forums/BlitzMax Programming/Turning an object into an extended type?
| ||
| Type TBody EndType Type TVehicle Extends TBody EndType I have a bunch of CreateBody() commands like CreateBoxBody() CreateConvexHullBody(), etc. It would be nice to be able to use these commands to create the body, and then create a vehicle from that body, but actually turn the body into a vehicle, instead of copying it: body:TBody=CreateBoxBody() CreateVehicle(body:TBody) vehicle:TVehicle=TVehicle(body) |
| ||
| You do need a convert function to upgrade from a base type to an extended type. Alternatively, you might be better off storing the body inside the vehicle, like: Type TBody EndType Type TVehicle Field body:TBody EndType body:TBody = CreateBoxBody() vehicle:TVehicle = CreateVehicle(body) Or you could even do an extended object, which actually uses another "TBody", like this: Type TBody
Method DoSomething()
EndType
Type TVehicle Extends TBody
Field body:TBody
Method DoSomething()
body.DoSomething()
EndMethod
EndType
body:TBody = CreateBoxBody()
vehicle:TVehicle = CreateVehicle(body)But at the end of the day simply having a converter/copier function in your extended type is probably the best solution. |
| ||
| Previously I was using your first method, but it sort of bugged me. I am writing docs, and it seems logical for the vehicle type to extend the TBody, like how my player controller type does. |