////////////////////////////////////////////////////////
// Water shader demo.
// Copyright 2010 by oP group Germany.
// Commercial Edition or above required for shaders
////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>
#include <keys.c>
#include <level.c>
#include <entmove.c>
#include <mtlFx.c>
#define PRAGMA_PATH "%EXE_DIR%\\templates\\levels";
////////////////////////////////////////////////////////
var water_height,water_ripple,water_scale;
FONT* fHelp = "Arial#16bi";
PANEL* pHelp =
{
digits(5,5,"[1]/[2] -> water level: %4.1f",fHelp,1,water_height);
digits(5,20,"[3]/[4] -> wave height: %3.0f",fHelp,1,water_ripple);
digits(5,35,"[5]/[6] -> wave scale: %3.0f",fHelp,1,water_scale);
digits(5,50,"Cursor keys -> move camera",fHelp,0,0);
flags = SHOW;
}
action water()
{
fx_mirrorWater();
while(1) {
if(key_hit("1")) terrain_raise(me,0.5);
if(key_hit("2")) terrain_raise(me,-0.5);
// shader skills contain float values, but are defined as var
// therefore the floatv/fixv conversion stuff is required
if(key_hit("3")) my.skill43 = floatv(fixv(my.skill43)+5);
if(key_hit("4")) my.skill43 = floatv(fixv(my.skill43)-5);
if(key_hit("5")) my.skill44 = floatv(fixv(my.skill44)+5);
if(key_hit("6")) my.skill44 = floatv(fixv(my.skill44)-5);
water_height = terrain_get_z(my,1);
water_ripple = fixv(my.skill43);
water_scale = fixv(my.skill44);
wait(1);
}
}
action blob()
{
my.skill42 = floatv(30); // texture influence
fx_envBump();
ent_rotate(me,2,1.5,0.5);
}
function main()
{
if (d3d_shaderversion<2020)
error("Shaders only supported in Commercial Edition!");
d3d_antialias = 4;
video_mode = 8;
fps_max = 60;
// load a level, and create sky, water, and a model :
level_load("small.hmp");
ent_createlayer("skycube+6.dds",SKY | CUBE | SHOW,1);
ent_create("water.hmp",vector(0,0,-5),water);
ent_create("blob.mdl",vector(0,0,30),blob);
vec_set(sun_color,vector(200,240,240));
// set up some parameters for the camera
vec_set(camera.x,vector(-120,0,75));
camera.tilt = -30;
// activate flythrough
def_move();
}