From edb1bf2341afae8c33d07cc019221e8759cff27f Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 4 Aug 2015 10:29:58 -0700 Subject: [PATCH] First pass on sprite 3D node (does not yet support perspective projections). --- packages/flutter/example/game/lib/node3d.dart | 36 +++++++++++++++++++ .../flutter/example/game/lib/sprites.dart | 1 + 2 files changed, 37 insertions(+) create mode 100644 packages/flutter/example/game/lib/node3d.dart diff --git a/packages/flutter/example/game/lib/node3d.dart b/packages/flutter/example/game/lib/node3d.dart new file mode 100644 index 00000000000..d98d471fad8 --- /dev/null +++ b/packages/flutter/example/game/lib/node3d.dart @@ -0,0 +1,36 @@ +part of sprites; + +class Node3D extends Node { + + double _rotationX = 0.0; + + double get rotationX => _rotationX; + + set rotationX(double rotationX) { + _rotationX = rotationX; + invalidateTransformMatrix(); + } + + double _rotationY = 0.0; + + double get rotationY => _rotationY; + + set rotationY(double rotationY) { + _rotationY = rotationY; + invalidateTransformMatrix(); + } + + Matrix4 computeTransformMatrix() { + // Apply normal 2d transforms + Matrix4 matrix = super.computeTransformMatrix(); + + + matrix.translate(0.0, 0.0, 500.0); + + // Rotate around x and y axis + matrix.rotateY(radians(_rotationY)); + matrix.rotateX(radians(_rotationX)); + + return matrix; + } +} diff --git a/packages/flutter/example/game/lib/sprites.dart b/packages/flutter/example/game/lib/sprites.dart index 1da06b789d4..c25eace8cdf 100644 --- a/packages/flutter/example/game/lib/sprites.dart +++ b/packages/flutter/example/game/lib/sprites.dart @@ -22,6 +22,7 @@ part 'action.dart'; part 'color_secuence.dart'; part 'image_map.dart'; part 'node.dart'; +part 'node3d.dart'; part 'node_with_size.dart'; part 'particle_system.dart'; part 'sprite.dart';