Gabriel Posted November 6, 2011 Share Posted November 6, 2011 Hello, I wish I had access to all objects in my scene with the script editor (mesh,surface ...) I tried this: function class: CreateObject (model) local object = self.super: CreateObject (model) e = CurrentWorld().Entities f = FindChild (c, "couloir01_2") <- "EXECPTION_ACCESS_VIOLATION" ...... Between me and my editor, there is no way to talk about it continually meets EXECPTION_ACCESS_VIOLATION. I'm trying to open dialogue, but nothing;-) someone has an idea to reconcile myself with my editor? Quote Link to comment Share on other sites More sharing options...
Canardia Posted November 6, 2011 Share Posted November 6, 2011 f = FindChild (e, "couloir01_2") Quote ■ Ryzen 9 ■ RX 6800M ■ 16GB ■ XF8 ■ Windows 11 ■ ■ Ultra ■ LE 2.5 ■ 3DWS 5.6 ■ Reaper ■ C/C++ ■ C# ■ Fortran 2008 ■ Story ■ ■ Homepage: https://canardia.com ■ Link to comment Share on other sites More sharing options...
Josh Posted November 6, 2011 Share Posted November 6, 2011 I suggest adding the relevant entities into a table when they are created, so you can access them later. If you are trying to find a child of that model, you would just call model:FindChild(name). Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Gabriel Posted November 6, 2011 Author Share Posted November 6, 2011 I suggest adding the relevant entities into a table when they are created, so you can access them later. If you are trying to find a child of that model, you would just call model:FindChild(name). ok, but how can I manage that?, in my case, I use the script of models, for example when I place an object on the scene with the editor, I want this object if there is an object in the scene with which it can interact. In this way the only thing I have to do is execute the loadScene ("myscene") and the rest is automatic as in the editor. Quote Link to comment Share on other sites More sharing options...
Gabriel Posted November 7, 2011 Author Share Posted November 7, 2011 I had never programmed in LUA, I thought I LUA or Basic was the same. I'm stupid to believe it ^ ^ I bought a book on Lua and is more than a vulgar BASIC interpreter, I just found an incredibly powerful language, but not enough restrictive. I say this because I found a solution to my problem and also with the help of "macklebee" and as I would like to benefit everyone, here is how I solved my problem: Piste = {} -- as global local function FindEntityByName(name) for model in iterate(CurrentWorld().entities) do if name == model:GetKey("Name") then return model end end return nil end local function GetSurfaceCouloirByName(ModName) local ModPiste=FindEntityByName(ModName) assert(ModPiste~= nil,"pas trouvé de piste "..ModName.." dans la scène") local MeshPiste=ModPiste:FindChild("U3D_STATIC_MESH") assert(MeshPiste~= nil,ModName.."trouvé mais pas de mesh portant le nom U3D_STATIC_MESH") local NSurfacePiste=MeshPiste:CountSurfaces() assert(NSurfacePiste > 0,ModName.."->U3D_STATIC_MESH n'a pas de surface !!!") local SurfacePiste=MeshPiste:GetSurface(1) return SurfacePiste end local function StorePathToTable(NonPiste,Surface) local CntVertice = Surface:CountVertices() assert(CntVertice > 0,"la surface n'a pas de vertice ! <StorePathToTable(Surface)>") Piste[NonPiste] = nil Piste[NonPiste] = {} Piste[NonPiste][0] = Vec3(0) for i = 1,CntVertice do Piste[NonPiste][i] = Surface:GetVertexPosition(i) end end local function ShowPathList(NomPiste) local t = Piste[NomPiste] local lt = #Piste[NomPiste] - 1 AppLog(lt) for i = 1,lt do AppLog(t[i].x) end end function class:CreateObject(model) local object=self.super:CreateObject(model) AppLog("Begin------------------------------") local TheSurface = GetSurfaceCouloirByName("Cou1") StorePathToTable("Piste1",TheSurface) ShowPathList("Piste1") AppLog("End ------------------------------") ;-) thank for all Gabriel Quote Link to comment Share on other sites More sharing options...
Guest Red Ocktober Posted November 14, 2011 Share Posted November 14, 2011 hey Gabe... i'm sorta new to this lua mess as well... but, i think you're going through a lot of unnecessary trouble with this... there should be no need for the extra function (FindEntityByName) just to find a child object of a scene... all you need do to find a child object in a scene is something like in the code below... Graphics(640,480) RegisterAbstractPath("") TFilter(1) AFilter(16) fw=CreateFramework() scene=LoadScene("abstract::myNew3.sbx") fw.main.camera:Movef(0,12,-5) daynight=scene:FindChild("daynight_2"); daynight:SetKey("rate",4) while(KeyHit(KEY_ESCAPE)==0 and AppTerminate()==0) do fw:Update() fw:Render() SetBlend(1) DrawText("Hello There",20,20) SetBlend(0) Flip() end this simple lil lua script loads a scene with Klepto's daynight object, finds the daynight object and uses the found object variable to set the daynight update rate to 4... ps... i'm using LW 2.50 good luck... --Mike Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.