Jump to content

Kronos

Members
  • Posts

    31
  • Joined

  • Last visited

Profile Information

  • Location
    Swindon, United Kingdom

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Kronos's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Is it possible to write a shader and then let the existing lighting shaders in Leadwerks do the lighting stuff or would I have to include a lighting element in my shader?
  2. Thanks for the input. I think I will take scaling out of the equation which will hopefully simplify things.
  3. I don't know if such a thing is possible but it would be helpful for the model editor I'm working on. At the moment scale seems to be getting messed up when parenting entities.
  4. A while ago I was looking at callbacks for the first time and wrote this little demo to test some things. Anyway I figure it might be useful to others so here is the code. 'A short demo to show how to setup certain callbacks in Blitzmax ' and how to associate an instance of a type with an entity which can hold additional info ' use wasd,lshift and space to move camera ' keys r,g,b to send message to entity (to change colour) 'count1 updates for every entity update 'count2 updates when entity is in defined range of camera and name of entity matches simple.name Framework leadwerks.engine Import "C:\Program Files (x86)\Leadwerks Engine SDK\BMX\Framework\framework.bmx" '***************************************************************************************** Type SimpleType ' our user data holder class Field health:Int Field Name:String = "Fred" Field Message:String Field BODY:TBody Field Count1:Long Field Count2:Long End Type '***************************************************************************************** Function CheckColour(ent:TEntity, message:String)' function used by MessageReceive callback Select message Case "Red" EntityColor(ent, Vec3(255, 0, 0)) Case "Green" EntityColor(ent, Vec3(0, 255, 0)) Case "Blue" EntityColor(ent, Vec3(0, 0, 255)) End Select Local Sim:SimpleType = simpletype(getentityuserdata(ent))' to access the userdata we have to cast to simpletype Sim.message = message End Function '******************************************************************************************* Function UpdateCounter(ent:TEntity) ' function used by EntityUpdate callback Local Sim:SimpleType = simpletype(getentityuserdata(ent)) Sim.count1:+1 End Function '******************************************************************************************* Function UpdateCounter2(ent:TEntity) 'function used by ForEachEntityInAABBDo If getentitykey(ent, "name") = "Fred" Then Local Sim:SimpleType = simpletype(getentityuserdata(ent)) If Sim.Name = "Fred" Then Sim.count2:+1 EndIf End Function '******************************************************************************************* 'main routine AppTitle:String = "Leadwerks Callback test" RegisterAbstractPath ("C:\Program Files (x86)\Leadwerks Engine SDK\") Graphics(1024, 768) Global fw:TFramework = CreateFramework() If Not fw RuntimeError "Failed to initialize engine." Local markcam:mCamsetup = New mcamsetup markcam.Camera = fw.Main.Camera Local Simple:SimpleType = New SimpleType Local MyMesh:TMesh = CreateCube()' create a mesh Setentitykey(MyMesh, "name", "Fred")' give it a name of "Fred" SetEntityCallback(MyMesh, Byte Ptr CheckColour, ENTITYCALLBACK_MESSAGERECEIVE)' associate a function to the message receive callback SetEntityCallback(MyMesh, Byte Ptr UpdateCounter, ENTITYCALLBACK_UPDATE)' associate a function to the update callback setentityuserdata(MyMesh, Simple) 'associates the instance of simpletype to MyMesh PositionEntity(fw.Main.Camera, Vec3(.5, 2, -2), 1) Global Light:TLight = CreateDirectionalLight() RotateEntity(Light, Vec3(45, 45, 0)) Local PLANE:TMesh = createPlane() ScaleEntity(PLANE, Vec3(5000, 1, 5000)) EntityColor(PLANE, Vec3(100, 100, 0)) Local Vec6:TAABB = New TAABB' needed for ForEachEntityInAABBDo HideMouse() While Not KeyHit(KEY_ESCAPE) And Not AppTerminate() markcam.Update() 'setup the area to search for entities Vec6.x0 = entityposition(markcam.Camera).X - 10 Vec6.x1 = entityposition(markcam.Camera).X + 10 Vec6.y0 = entityposition(markcam.Camera).Y - 10 Vec6.y1 = entityposition(markcam.Camera).Y + 10 Vec6.z0 = entityposition(markcam.Camera).Z - 10 Vec6.z1 = entityposition(markcam.Camera).Z + 10 ForEachEntityInAABBDo(Vec6, Byte Ptr UpdateCounter2) If KeyHit(KEY_R) Then sendentitymessage(MyMesh, "Red", 1200)'send message with a short delay If KeyHit(KEY_G) Then sendentitymessage(MyMesh, "Green", 1200) If KeyHit(KEY_B) Then sendentitymessage(MyMesh, "Blue", 1200) fw.Update() fw.render() DrawText(Int entityposition(markcam.Camera).X + " " + Int entityposition(markcam.Camera).Y + " " + Int entityposition(markcam.Camera).Z, 0, 16) DrawText("Simple.Message=" + Simple.message, 0, 32) DrawText("Simple.count1=" + Simple.count1, 0, 48) DrawText("Simple.count2=" + Simple.count2, 0, 64) Flip(0) Wend ShowMouse() End '********************************************************************************************* 'just a little camera control class Type mCamSetup Field mx:Float=0 Field my:Float=0 Field move:Float=1 Field wire:Int = -1 Field Camera:TCamera Field Py:Float Field toggle:Int = 1 Method New() End Method Method Update() mx=mx+(MouseX()-GraphicsWidth()/2)/10 my=my+(MouseY()-GraphicsHeight()/2)/10 MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2) RotateEntity(Camera, Vec3(my, -mx, 0)) If toggle = 1 Then If KeyDown(KEY_W) = True Then MoveEntity Camera, Vec3(0, 0, move * AppSpeed()) If KeyDown(KEY_S) = True Then MoveEntity Camera, Vec3(0, 0, -move * AppSpeed()) If KeyDown(KEY_A) = True Then MoveEntity Camera, Vec3(-move * AppSpeed(), 0, 0) If KeyDown(KEY_D) = True Then MoveEntity Camera, Vec3(move * AppSpeed(), 0, 0) If KeyDown(KEY_SPACE) = True Then TranslateEntity Camera, Vec3(0, move * AppSpeed(), 0) If KeyDown(KEY_LSHIFT) = True Then TranslateEntity Camera, Vec3(0, -move * AppSpeed(), 0) EndIf End Method End Type
  5. Evangelise away it was a good read. I'm not sure why you think I haven't taken an OOP approach to this, I thought I had spelled it out pretty clearly.
  6. After a few of weeks of programming burnout I am now back in action. i think I was starting to feel a bit swamped with the increasing complexity of my project amongst other things however things are looking a bit rosier now. I probably should have sat down and made a proper plan because of all the dependencies of the various elements. My history with Leadwerks has been somewhat chequered and I have struggled for along time trying to do stuff with it in the past. However lately things just seem to be clicking so I have decided to move my main project over from Xors3d to Leadwerks. Xors is a good, easy to use engine but it has certain flaws which make it less than ideal for my purposes plus I am more of an OpenGL man. My aim is to make a sort of strategy/vehicle combat type game in the vein of battlezone/armourgeddon/carrier command. Due to my limited programming skill I am trying to make it as simple as possible at the moment.(Still seems pretty damn complicated) What I have so far:. Vehicle mesh loading - Had to write my own mesh loader to overcome certain problems Vehicle navigation - nothing fancy just point to point. I will probably have to add some simple(if there is such a thing) obstacle avoidance at some point. I have a sort of an idea about a passive avoidance system but haven't experimented with it yet. Order System - only 4 order types at the moment (only 1 thats actually working!) - vehicles and other entities will be controlled by orders Turret system - controls turret rotation/aiming - turrets attach to vehicles Gun system - controls the firing ie when to fire,where to fire from, reload times, etc - guns attach to turrets Projectile - guns fire projectiles - deals with collisions - projectile types and effects. One thing I am particularly keen to have is proper lighting on missiles and explosions ie so the landscape will light up when they fly past or explode. Arbitrary world partition system - manages vehicles and other entities - vehicles need to know about other vehicles and buildings in their vicinity whether they are friendly or not. I call it arbitrary because the world sectors can be any position, and theoretically any size, in 3d space. There are probably better ways to do it but in keeping with my mantra i am keeping it simple, Things to do. Next step is probably create some different particle effects for projectiles and explosions. Implement some actual vehicle behaviours - now that I have the order system in place vehicles should be able to issue their own orders under certain conditions ie aggressively pursuing detected enemies. I am kind of excited as I feel I am actually quite close to having something that will soon have a life of its own, just a couple more hills (mountains) to climb.
  7. it would probably help if you gave some background eg what programs you've used in the past. What type of game are you looking to make. What programming language do you intend to use?
  8. sound or sound triggers on emitters/particles? For explosions and the like.
  9. None that I am aware of. So are you saying leadwerks engine itself is running in debug mode when this option is set because it was written in blitzmax. Interesting.
  10. Seems odd.I haven't noticed this any other engines when using blitzmax. oh well.
  11. Just wondering if anyone else has this problem. All my leadwerks programs written in Blitzmax seems to run really slow when compiled in debug mode. As an example I have a simple app which has a scene , some animated characters running about and thats about it but it runs at less than 30 fps in debug mode. 60+ when debug is unchecked. Is this a windows 7 thing?
  12. One of the things that always amazes me in wow is the lack of visible lod'ing on anything. One wonders whether they use brute force for rendering the terrain. The only thing I know about the terrains in wow is that they use a max of 4 textures per terrain square.
  13. This seems to do the job for horizontal and vertical aiming. Local t:TVec3=TFormPoint(Vec3(0,0,0),enemytarget.chassis,chassis) dYaw = -ATan2(t.x,t.z) dPitch =-ATan2(t.y, Sqr(t.x*t.x + t.z*t.z)) mRotate(turret1,0,CurveAngle(dYaw,entityrotation(turret1).y,10.0/AppSpeed()),0) mRotate(barrel,CurveAngle(dPitch,entityrotation(barrel).x,10.0/AppSpeed()),0,0) never really understood TFormpoint and TFormVector before but its becoming clearer. Thanks Josh for pointing me in the right direction.(haha unintentional pun)
×
×
  • Create New...