cassius Posted August 6, 2011 Share Posted August 6, 2011 I normaly use Blitzmax, but thought I would give le net a try. I know the basics of c#. Can someone point me to a scene loader example? if not I will have to try to translate my bmax code to le net. Quote amd quad core 4 ghz / geforce 660 ti 2gb / win 10 Blender,gimp,silo2,ac3d,,audacity,Hexagon / using c++ Link to comment Share on other sites More sharing options...
Roland Posted August 6, 2011 Share Posted August 6, 2011 // ==================================================================== // This file was generated by LEBuilder // http://leadwerks.com/werkspace // ==================================================================== using System; using LeadwerksEngine; using System.Globalization; namespace LoadAScene { class LoadAScene { private const int ScreenWidth = 800; private const int ScreenHeight = 600; private const string MediaDir = "D:/GameDevel"; private const string AppTitle = "LoadAScene"; /// <summary> /// Convert string to a TVec3. /// Values should be separated by SPACE, TAB or , /// </summary> /// <param name="s">Sting to be converted</param> /// <returns>Resulting TVec3</returns> static TVec3 StringToVec3(string s) { char[] delimiterChars = { ',', ' ', '\t' }; string[] values = s.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries); IFormatProvider provider = CultureInfo.CreateSpecificCulture("en-US"); NumberStyles style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.Float; return new TVec3( float.Parse(values[0],style,provider), float.Parse(values[1],style, provider), float.Parse(values[2],style, provider)); } static void UpdateCallback(TEntity ent) { LE.TurnEntity(ent, new TVec3(LE.AppSpeed() * 0.5f)); } static void ErrOut( string message ) { Console.WriteLine( message ); } static void Main(string[] args) { try { // Initialize LE.Initialize(); LE.SetAppTitle(AppTitle); LE.RegisterAbstractPath(MediaDir); // Set graphics mode if( LE.Graphics(ScreenWidth,ScreenHeight) == 0 ) { ErrOut( "Failed to set graphics mode." ); return; } // Create framework object and set it to a global object so other scripts can access it TFramework fw = LE.CreateFramework(); if( !fw.IsValid ) { ErrOut( "Failed to initialize engine." ); return; } // Set Lua framework object LE.SetGlobalObject( "fw", fw.Handle ); // Set Lua framework variable IntPtr lua = LE.GetLuaState(); LE.lua_pushobject( lua, fw.Handle ); LE.lua_setglobal( lua, "fw" ); LE.lua_pop( lua, 1 ); // Load Scene TEntity scene = LE.LoadScene("abstract::tunnels.sbx"); TVec3 campos = StringToVec3(LE.GetEntityKey(scene, "cameraposition")); TVec3 camrot = StringToVec3(LE.GetEntityKey(scene, "camerarotation")); // Position camera as in scene file TCamera camera = LE.GetLayerCamera( LE.GetFrameworkLayer(0) ); LE.PositionEntity( camera, campos ); LE.RotateEntity(camera, camrot); // Until user hits Escape while( !LE.KeyHit() && !LE.AppTerminate() ) { if( !LE.AppSuspended() ) { LE.UpdateFramework(); LE.RenderFramework(); LE.Flip( 0 ); } } } // Catch Exceptions catch( Exception e ) { Console.WriteLine( e.Message ) ; } // Terminate finally { LE.Terminate(); } } } } Quote Roland Strålberg Website: https://rstralberg.com Link to comment Share on other sites More sharing options...
L B Posted August 8, 2011 Share Posted August 8, 2011 Or, using Leadwerks .NET: using Leadwerks; class LoadAScene { static void Main(string[] args) { try { Engine.Initialize(800, 600); Window.Caption = "LoadAScene"; FileSystem.AbstractPath = @"D:\GameDevel"; Framework.Initialize(); Scene scene = Scene.Load("abstract::tunnels.sbx"); Framework.Camera.Position = Vector3.Parse(scene.Keys["cameraposition"]); Framework.Camera.Rotation = Vector3.Parse(scene.Keys["camerarotation"]); while (!Keyboard.IsKeyHit(Key.Escape) && !Window.HasRequestedClose) { if (Window.HasFocus) { Framework.Update(); Framework.Render(); Graphics.Flip(); } } } catch (LeadwerksException lex) { Debug.Alert(lex.Message); } finally { Framework.Dispose(); Engine.Dispose(); } } } Quote Link to comment Share on other sites More sharing options...
cassius Posted August 8, 2011 Author Share Posted August 8, 2011 Roland. I get an error message on the line below. The only change I made was to load in my own level instead of tunnels It was somthing about protected code being corrupt. TVec3 campos = StringToVec3(LE.GetEntityKey(scene, "cameraposition")); What is the best way to replace the spinning cube listing with your code? Thanks lazlo. Will your version always be maitained? Quote amd quad core 4 ghz / geforce 660 ti 2gb / win 10 Blender,gimp,silo2,ac3d,,audacity,Hexagon / using c++ Link to comment Share on other sites More sharing options...
Roland Posted August 8, 2011 Share Posted August 8, 2011 Roland. I get an error message on the line below. The only change I made was to load in my own level instead of tunnels It was somthing about protected code being corrupt. TVec3 campos = StringToVec3(LE.GetEntityKey(scene, "cameraposition")); What is the best way to replace the spinning cube listing with your code? Thanks lazlo. Will your version always be maitained? Hard to say what your error is without having the SBX file you are using. Here is the code I showed including the Visual Studio project. Its working fine here. I assume you are using latest SDK 2.45 Unrar the rar file in your SDK directory. It will created a folder Examples. Open the Examples\LoadAScene\LoadAScene.sln in Visual Studio and see that tunnels.sbx is loaded OK. Then change to you scene file and see what happens. Quote Roland Strålberg Website: https://rstralberg.com Link to comment Share on other sites More sharing options...
cassius Posted August 8, 2011 Author Share Posted August 8, 2011 Thanks for help. Much apreciated. Quote amd quad core 4 ghz / geforce 660 ti 2gb / win 10 Blender,gimp,silo2,ac3d,,audacity,Hexagon / using c++ 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.