I've spent the last few days writing simple examples for every single command in Leadwerks 3. Not only does this make the documentation more friendly, it also acts as a final test to make sure all the commands work the way they say they should. I make the C++ example and then Chris converts it to Lua (and tells me what I did wrong!).
I didn't realize it at first, but this really showcases the strength of API design of Leadwerks. Since you get full control over the execution and flow of a Leadwerks program, it's easy to learn from simple examples that demonstrate one idea. Below are a few examples for different commands in the API.
Get the device accellerometer reading:
:
I didn't realize it at first, but this really showcases the strength of API design of Leadwerks. Since you get full control over the execution and flow of a Leadwerks program, it's easy to learn from simple examples that demonstrate one idea. Below are a few examples for different commands in the API.
Get the device accellerometer reading:
#include "App.h"
using namespace Leadwerks;
Window* window = NULL;
Context* context = NULL;
bool App::Start()
{
window = Window::Create();
context = Context::Create(window);
return true;
}
bool App::Continue()
{
if (window->Closed() || window->KeyDown(Key::Escape)) return false;
Draw::SetColor(0,0,0);
context->Clear();
//Display the device information on the screen
Draw::SetBlendMode(Blend::Alpha);
Draw::SetColor(1,1,1);
Draw::Text("Orientation: "+String(Device::GetOrientation()),2,2);
Draw::Text("Acceleration: "+Device::GetAcceleration().ToString(),2,22);
Draw::SetBlendMode(Blend::Solid);
context->Sync();
return true;
}Create a physics shape from a model and use it on a scaled entity #include "App.h"
using namespace Leadwerks;
Window* window = NULL;
Context* context = NULL;
World* world = NULL;
Camera* camera = NULL;
bool App::Start()
{
window = Window::Create();
context = Context::Create(window);
world = World::Create();
camera = Camera::Create();
camera->SetRotation(35,0,0);
camera->Move(0,0,-10);
Light* light = DirectionalLight::Create();
light->SetRotation(35,35,0);
//Create the ground
Model* ground = Model::Box(10,1,10);
ground->SetPosition(0,-0.5,0);
ground->SetColor(0,1,0);
//Create a shape
Shape* shape = Shape::Box(0,0,0, 0,0,0, 10,1,10);
ground->SetShape(shape);
shape->Release();
//Load a model
Model* model = Model::Load("Models/teapot.mdl");
model->SetPosition(0,0,0);
model->SetColor(0,0,1);
model->SetScale(4,4,4);
//Create a shape
shape = Shape::PolyMesh(model->GetSurface(0));
model->SetShape(shape);
model->SetPosition(0,0,0);
shape->Release();
//Create some objects to fall
model = Model::Sphere();
shape = Shape::Sphere();
model->SetShape(shape);
shape->Release();
model->SetMass(1);
model->SetColor(Math::Rnd(0,1),Math::Rnd(0,1),Math::Rnd(0,1));
model->SetPosition(Math::Rnd(-1,1),Math::Rnd(3,6),Math::Rnd(-1,1));
for (int i=0; i<10; i++)
{
model = (Model*)model->Instance();
model->SetCollisionType(Collision::Prop);
model->SetColor(Math::Rnd(0,1),Math::Rnd(0,1),Math::Rnd(0,1));
model->SetPosition(Math::Rnd(-1,1),5+i*2,Math::Rnd(-1,1));
}
return true;
}
bool App::Continue()
{
if (window->Closed() || window->KeyDown(Key::Escape)) return false;
Time::Update();
world->Update();
world->Render();
context->Sync();
return true;
}Create a texture from scratch:#include "App.h"
using namespace Leadwerks;
Window* window = NULL;
Context* context = NULL;
World* world = NULL;
Texture* texture = NULL;
bool App::Start()
{
window = Window::Create();
context = Context::Create(window);
//Create a texture
texture = Texture::Create(256,256);
//Set the texture pixel data
char* pixels = (char*)malloc(texture->GetMipmapSize(0));
char r,g,b;
for (int x=0; x<256; x++)
{
for (int y=0; y<256; y++)
{
int p = (x*texture->GetWidth() + y)*4;
memcpy(&r,pixels + p + 0, 1);
memcpy(&g,pixels + p + 1, 1);
memcpy(&b,pixels + p + 2, 1);
if (x<128)
{
if (y<128)
{
r=0; g=0; b=255;
}
else
{
r=255; g=0; b=0;
}
}
else
{
if (y<128)
{
r=255; g=0; b=0;
}
else
{
r=0; g=0; b=255;
}
}
memcpy(pixels + p + 0, &r, 1);
memcpy(pixels + p + 1, &g, 1);
memcpy(pixels + p + 2, &b, 1);
}
}
texture->SetPixels(pixels);
return true;
}
bool App::Continue()
{
if (window->Closed() || window->KeyDown(Key::Escape)) return false;
Draw::SetColor(0,0,0);
context->Clear();
//Display the texture on screen
Draw::SetColor(1,1,1);
Draw::Image(texture,0,0);
context->Sync();
return true;
}http://www.leadwerks.com
Create a custom theme





#include "App.h" using namespace Leadwerks; App::App() : window(NULL), context(NULL), world(NULL), camera(NULL) {} App::~App() { delete world; delete window; } bool App::Start() { window = Window::Create(); context = Context::Create(window); return true; } bool App::Continue() { if (window->Closed() || window->KeyDown(Key::Escape)) return false; context->SetColor(0,0,0); context->Clear(); context->SetColor(0,1,0); context->DrawRect(0,0,100,100); context->Sync(); return true; }