====== module feature ====== The module feature is a feature which can call and use a program written on other files.\\ Like a class, you can modularize Lua script based on their functions. * To use the module feature, you need [[https://github.com/virtual-cast/VCI/releases |VCI v0.20]] or later. * The module feature is supported on VirtualCastは1.7.0a or later. ==== How to set up the module (VCI Object) ==== {{:vci:script:module:img1.jpg?direct&400|}} - Size: specify a number which is "the number of modules to use +1." - Name: type the name of the module - Paste the program for this module in the text field === Things to note, specs, etc. === * You can call a module from a module(You couldn't in the past but now you can). * To create a module while debugging on Virtual Cast..\\ leave the 3rd text area blank and upload to the SEED.\\Then edit the script from the EmbeddedScriptWorkspace folder.\\ * You cannot access a function that is under the vci table (e.g., vci.assets) * You can use types such as Quaternion, Vector 3, etc. ==== Call and execute a module ==== -- Store the feature of the module in module_1 local module_1 = require "module_1" -- Call a function in module_1 print(module_1.GetName()) print(module_1.GetVector()) -- Return the name of its file name local function GetName() return "module_1" end -- Return Vector3.__new(0,100,0) local function GetVector() return Vector3.__new(0,100,0) end -- required for using IntelliSense (predictive input) in VScode return { GetName = GetName, GetVector = GetVector } === Result === module_1 (0,100,0) ==== Use it like a class ==== local module_1 = require "module_1" local test1 = module_1.new(50,1) local test2 = module_1.new(100,2) test1:pp() -- You can ommit the self argument by usnig a colon. Same as "test1.pp(test1)" test2:pp() local module_1 = {} -- This name can be anything module_1.new = function(_x,_y) -- create a table dynamically with the "new function" local obj = {} obj.x = _x obj.y = _y obj.pp = function(self) print(string.format("(%d,%d)", self.x, self.y)) end return obj end return module_1