Script v1.7.1.0
- AI
- Animals
- Contracts
- Debug
- Economy
- Effects
- Events
- Farms
- GUI
- Handtools
- I3d
- Materials
- Misc
- Objects
- Placeables
- Player
- Shop
- Sounds
- Specializations
- Triggers
- Utils
- Vehicles
- AIVehicleUtil
- ConfigurationManager
- ConfigurationUtil
- SpecializationManager
- SpecializationUtil
- Vehicle
- VehicleCamera
- VehicleCharacter
- VehicleHudUtils
- VehicleMotor
- VehiclePlacementCallback
- VehicleTypeManager
- WheelsUtil
- WorkAreaTypeManager
- Weather
Engine v1.7.1.0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- XML
- general
Foundation Reference
SpecializationUtil
DescriptionSpecialization util classFunctions
- callSpecializationsFunction
- hasSpecialization
- raiseEvent
- registerEvent
- registerEventListener
- registerFunction
- registerOverwrittenFunction
callSpecializationsFunction
DescriptionDefinitioncallSpecializationsFunction()Code
13 | function SpecializationUtil.callSpecializationsFunction(func) |
14 | return function (self, ...) |
15 | for _,v in pairs(g_specializationManager:getSpecializations()) do |
16 | local f = v[func] |
17 | if f ~= nil then |
18 | f(self, ...) |
19 | end |
20 | end |
21 | end |
22 | end |
hasSpecialization
DescriptionDefinitionhasSpecialization()Code
101 | function SpecializationUtil.hasSpecialization(spec, specializations) |
102 | for _,v in pairs(specializations) do |
103 | if v == spec then |
104 | return true |
105 | end |
106 | end |
107 | return false |
108 | end |
raiseEvent
DescriptionDefinitionraiseEvent()Code
26 | function SpecializationUtil.raiseEvent(vehicle, eventName, ...) |
27 | assert(vehicle.eventListeners[eventName] ~= nil, "Error: Event '"..tostring(eventName).."' is not registered for vehicleType '"..tostring(vehicle.vehicleType.name).."'!") |
28 | for _, spec in ipairs(vehicle.eventListeners[eventName]) do |
29 | spec[eventName](vehicle, ...) |
30 | end |
31 | end |
registerEvent
DescriptionDefinitionregisterEvent()Code
35 | function SpecializationUtil.registerEvent(vehicleType, eventName) |
36 | if vehicleType.functions[eventName] ~= nil or vehicleType.events[eventName] ~= nil or (eventName == nil or eventName == "") then |
37 | printCallstack() |
38 | end |
39 | |
40 | assert(vehicleType.functions[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as function in vehicleType '"..tostring(vehicleType.name).."'!") |
41 | assert(vehicleType.events[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as event in vehicleType '"..tostring(vehicleType.name).."'!") |
42 | assert(eventName ~= nil and eventName ~= "", "Error: Event '"..tostring(eventName).."' is 'nil' or empty!") |
43 | |
44 | vehicleType.events[eventName] = eventName |
45 | vehicleType.eventListeners[eventName] = {} |
46 | end |
registerEventListener
DescriptionDefinitionregisterEventListener()Code
76 | function SpecializationUtil.registerEventListener(vehicleType, eventName, spec) |
77 | local className = ClassUtil.getClassName(spec) |
78 | |
79 | assert(vehicleType.eventListeners ~= nil, "Error: Invalid vehicle type for specialization '"..tostring(className).."'!") |
80 | if vehicleType.eventListeners[eventName] == nil then |
81 | return |
82 | end |
83 | |
84 | assert(spec[eventName] ~= nil, "Error: Event listener function '"..tostring(eventName).."' not defined in specialization '"..tostring(className).."'!") |
85 | |
86 | local found = false |
87 | for _, registeredSpec in pairs(vehicleType.eventListeners[eventName]) do |
88 | if registeredSpec == spec then |
89 | found = true |
90 | break |
91 | end |
92 | end |
93 | |
94 | assert(not found, "Error: Eventlistener for '"..eventName.."' already registered in specialization '"..tostring(className).."'!") |
95 | |
96 | table.insert(vehicleType.eventListeners[eventName], spec) |
97 | end |
registerFunction
DescriptionDefinitionregisterFunction()Code
50 | function SpecializationUtil.registerFunction(vehicleType, funcName, func) |
51 | if vehicleType.functions[funcName] ~= nil or vehicleType.events[funcName] ~= nil or func == nil then |
52 | printCallstack() |
53 | end |
54 | |
55 | assert(vehicleType.functions[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as function in vehicleType '"..tostring(vehicleType.name).."'!") |
56 | assert(vehicleType.events[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as event in vehicleType '"..tostring(vehicleType.name).."'!") |
57 | assert(func ~= nil, "Error: Given reference for Function '"..tostring(funcName).."' is 'nil'!") |
58 | |
59 | vehicleType.functions[funcName] = func |
60 | end |
registerOverwrittenFunction
DescriptionDefinitionregisterOverwrittenFunction()Code
64 | function SpecializationUtil.registerOverwrittenFunction(vehicleType, funcName, func) |
65 | |
66 | assert(func ~= nil, "Error: Given reference for OverwrittenFunction '"..tostring(funcName).."' is 'nil'!") |
67 | |
68 | -- if function does not exist, we don't need to overwrite anything |
69 | if vehicleType.functions[funcName] ~= nil then |
70 | vehicleType.functions[funcName] = Utils.overwrittenFunction(vehicleType.functions[funcName], func) |
71 | end |
72 | end |