100 lines
2.5 KiB
Text
100 lines
2.5 KiB
Text
|
# ==============================================================================
|
||
|
# DEMO
|
||
|
# ==============================================================================
|
||
|
var canvas_demo = {
|
||
|
new: func()
|
||
|
{
|
||
|
debug.dump("Creating new canvas demo...");
|
||
|
|
||
|
var m = { parents: [canvas_demo] };
|
||
|
|
||
|
# create a new canvas...
|
||
|
m.canvas = canvas.new({
|
||
|
"name": "PFD-Test",
|
||
|
"size": [1024, 1024],
|
||
|
"view": [768, 1024],
|
||
|
"mipmapping": 1
|
||
|
});
|
||
|
|
||
|
# ... and place it on the object called PFD-Screen
|
||
|
m.canvas.addPlacement({"node": "PFD-Screen"});
|
||
|
m.canvas.setColorBackground(0,0.04,0);
|
||
|
|
||
|
# and now do something with it
|
||
|
m.dt = props.globals.getNode("sim/time/delta-sec");
|
||
|
m.gmt = props.globals.getNode("sim/time/gmt");
|
||
|
|
||
|
var g = m.canvas.createGroup();
|
||
|
var g_tf = g.createTransform();
|
||
|
g_tf.setRotation(0.1 * math.pi);
|
||
|
|
||
|
m.text_title =
|
||
|
g.createChild("text", "line-title")
|
||
|
.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX)
|
||
|
.setColor(0,0,0)
|
||
|
.setColorFill(0,1,0)
|
||
|
.setAlignment("center-top")
|
||
|
.setFont("LiberationFonts/LiberationMono-Bold.ttf")
|
||
|
.setFontSize(70, 1.5)
|
||
|
.setTranslation(384, 5);
|
||
|
|
||
|
m.dynamic_text =
|
||
|
g.createChild("text", "dynamic-text")
|
||
|
.setText("Text node created at runtime.")
|
||
|
.setFont("Helvetica.txf")
|
||
|
.setFontSize(50)
|
||
|
.setAlignment("center-center");
|
||
|
m.tf = m.dynamic_text.createTransform();
|
||
|
m.tf.setTranslation(384, 200);
|
||
|
|
||
|
m.path =
|
||
|
g.createChild("path")
|
||
|
.moveTo(25, 12.5)
|
||
|
.lineTo(325, 25)
|
||
|
.lineTo(150, 200)
|
||
|
.cubicTo(150, 225, 50, 225, 50, 200)
|
||
|
.close()
|
||
|
.setTranslation(200, 70)
|
||
|
.setStrokeLineWidth(4)
|
||
|
.setStrokeDashArray([10,6,3,3,6])
|
||
|
.setColor(0.2,0.3,1);
|
||
|
|
||
|
m.rot = 0;
|
||
|
m.pos = 200;
|
||
|
m.move = 50;
|
||
|
|
||
|
return m;
|
||
|
},
|
||
|
update: func()
|
||
|
{
|
||
|
var dt = me.dt.getValue();
|
||
|
|
||
|
# Change the value of a text element
|
||
|
me.text_title.setText(me.gmt.getValue());
|
||
|
|
||
|
# Animate a text node a bit
|
||
|
me.rot += dt * 0.3 * math.pi;
|
||
|
me.tf.setRotation(me.rot);
|
||
|
|
||
|
me.pos += me.move * dt;
|
||
|
if( me.pos > 900 )
|
||
|
{
|
||
|
me.pos = 900;
|
||
|
me.move *= -1;
|
||
|
}
|
||
|
else if( me.pos < 150 )
|
||
|
{
|
||
|
me.pos = 150;
|
||
|
me.move *= -1;
|
||
|
}
|
||
|
me.tf.setTranslation(384, me.pos);
|
||
|
|
||
|
settimer(func me.update(), 0);
|
||
|
},
|
||
|
};
|
||
|
|
||
|
setlistener("/nasal/canvas/loaded", func {
|
||
|
var demo = canvas_demo.new();
|
||
|
demo.update();
|
||
|
}, 1);
|