Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 0 additions & 84 deletions melos.yaml

This file was deleted.

6 changes: 4 additions & 2 deletions packages/benchmark/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
name: forge2d_benchmark
description: Simple benchmark for Forge2D
resolution: workspace

version: 1.0.0+1

publish_to: 'none'

environment:
sdk: ">=3.0.0 <4.0.0"
sdk: ">=3.8.0 <4.0.0"

dependencies:
build_runner: ^2.4.5
build_web_compilers: ^4.0.3
forge2d: ^0.14.0
web: ^1.1.1

dev_dependencies:
flame_lint: ^1.1.1
flame_lint: ^1.4.1
11 changes: 6 additions & 5 deletions packages/benchmark/web/bench2d_web.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:html';
import 'dart:js_interop';

import 'package:forge2d/forge2d_browser.dart';
import 'package:web/web.dart';

import 'bench2d.dart';

Expand All @@ -16,7 +17,7 @@ class Bench2dWeb extends Bench2d {
static const int canvasHeight = 600;
static const double _viewportScale = 10.0;

late CanvasElement canvas;
late HTMLCanvasElement canvas;
late CanvasRenderingContext2D ctx;
late ViewportTransform viewport;
late DebugDraw debugDraw;
Expand All @@ -25,7 +26,7 @@ class Bench2dWeb extends Bench2d {
/// before calling runAnimation.
void initializeAnimation() {
// Setup the canvas.
canvas = CanvasElement()
canvas = HTMLCanvasElement()
..width = canvasWidth
..height = canvasHeight;

Expand All @@ -51,10 +52,10 @@ class Bench2dWeb extends Bench2d {

ctx.clearRect(0, 0, canvasWidth, canvasHeight);
world.drawDebugData();
window.animationFrame.then(render);
window.requestAnimationFrame(render.toJS);
}

void runAnimation() {
window.animationFrame.then(render);
window.requestAnimationFrame(render.toJS);
}
}
11 changes: 6 additions & 5 deletions packages/forge2d/example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
name: forge2d_examples
description: Samples showcasing Forge2D

version: 1.0.0+1
resolution: workspace

publish_to: 'none'

environment:
sdk: ">=3.0.0 <4.0.0"
sdk: ">=3.8.0 <4.0.0"

dependencies:
forge2d: ^0.14.0
web: ^1.1.1

dev_dependencies:
build_runner: ^2.4.5
build_web_compilers: ^4.0.4
flame_lint: ^1.1.1
build_runner: ^2.6.0
build_web_compilers: ^4.2.0
flame_lint: ^1.4.1
27 changes: 14 additions & 13 deletions packages/forge2d/example/web/demo.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'dart:async';
import 'dart:html' hide Body;
import 'dart:js_interop';

import 'package:forge2d/forge2d_browser.dart';
import 'package:web/web.dart';

/// An abstract class for any Demo of the Forge2D library.
abstract class Demo {
Expand Down Expand Up @@ -31,7 +32,7 @@ abstract class Demo {
final double _viewportScale;

/// The drawing canvas.
late final CanvasElement canvas;
late final HTMLCanvasElement canvas;

/// The canvas rendering context.
late final CanvasRenderingContext2D ctx;
Expand All @@ -55,10 +56,10 @@ abstract class Demo {
late final Element worldStepTime;

Demo(String name, [Vector2? gravity, this._viewportScale = viewportScale])
: world = World(gravity ?? Vector2(0.0, _gravity)),
_stopwatch = Stopwatch()..start() {
: world = World(gravity ?? Vector2(0.0, _gravity)),
_stopwatch = Stopwatch()..start() {
world.setAllowSleep(true);
querySelector('#title')?.innerHtml = name;
document.querySelector('#title')?.innerHTML = name.toJS;
}

/// Advances the world forward by timestep seconds.
Expand All @@ -72,17 +73,17 @@ abstract class Demo {
world.drawDebugData();
frameCount++;

window.requestAnimationFrame(step);
window.requestAnimationFrame(step.toJS);
}

/// Creates the canvas and readies the demo for animation. Must be called
/// before calling runAnimation.
void initializeAnimation() {
// Setup the canvas.
canvas = (Element.tag('canvas') as CanvasElement)
canvas = HTMLCanvasElement()
..width = canvasWidth
..height = canvasHeight;
document.body?.nodes.add(canvas);
document.body?.appendChild(canvas);
ctx = canvas.context2D;

// Create the viewport transform with the center at extents.
Expand All @@ -96,24 +97,24 @@ abstract class Demo {
// Have the world draw itself for debugging purposes.
world.debugDraw = debugDraw;

fpsCounter = querySelector('#fps-counter')!;
worldStepTime = querySelector('#world-step-time')!;
fpsCounter = document.querySelector('#fps-counter')!;
worldStepTime = document.querySelector('#world-step-time')!;
Timer.periodic(const Duration(seconds: 1), (Timer t) {
fpsCounter.innerHtml = frameCount.toString();
fpsCounter.innerHTML = frameCount.toJS;
frameCount = 0;
});
Timer.periodic(const Duration(milliseconds: 200), (Timer t) {
if (elapsedUs == null) {
return;
}
worldStepTime.innerHtml = '${elapsedUs! / 1000} ms';
worldStepTime.innerHTML = '${elapsedUs! / 1000} ms'.toJS;
});
}

void initialize();

/// Starts running the demo as an animation using an animation scheduler.
void runAnimation() {
window.requestAnimationFrame(step);
window.requestAnimationFrame(step.toJS);
}
}
6 changes: 4 additions & 2 deletions packages/forge2d/example/web/domino_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ class DominoTest extends Demo {

for (var i = 0; i < 4; ++i) {
for (var j = 0; j < numPerRow; j++) {
bodyDef.position =
Vector2(-14.75 + j * (29.5 / (numPerRow - 1)), 7.3 + 5 * i);
bodyDef.position = Vector2(
-14.75 + j * (29.5 / (numPerRow - 1)),
7.3 + 5 * i,
);
if (i == 2 && j == 0) {
bodyDef.angle = -.1;
bodyDef.position.x += .1;
Expand Down
3 changes: 2 additions & 1 deletion packages/forge2d/example/web/domino_tower.dart
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ class DominoTower extends Demo {
dominoHeight * .5 + (dominoHeight + 2 * dominoWidth) * .99 * j;

for (var i = 0; i < baseCount - j; ++i) {
currX = i * 1.5 * dominoHeight -
currX =
i * 1.5 * dominoHeight -
(1.5 * dominoHeight * (baseCount - j) / 2);
dominoDensity *= 2.5;
if (i == 0) {
Expand Down
19 changes: 6 additions & 13 deletions packages/forge2d/example/web/racer.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'dart:html' hide Body;
import 'dart:js_interop';
import 'dart:math';

import 'package:forge2d/forge2d_browser.dart';
import 'package:web/web.dart';

import 'demo.dart';
import 'racer/car.dart';
Expand All @@ -26,8 +27,8 @@ class Racer extends Demo implements ContactListener {
_controlState = 0;

// Bind to keyboard events.
document.onKeyDown.listen(_handleKeyDown);
document.onKeyUp.listen(_handleKeyUp);
document.onkeydown = _handleKeyDown.toJS;
document.onkeyup = _handleKeyUp.toJS;

// Add ourselves as a collision listener.
world.setContactListener(this);
Expand Down Expand Up @@ -120,33 +121,25 @@ class Racer extends Demo implements ContactListener {
switch (event.keyCode) {
case 37:
_controlState |= ControlState.left;
break;
case 38:
_controlState |= ControlState.up;
break;
case 39:
_controlState |= ControlState.right;
break;
case 40:
_controlState |= ControlState.down;
break;
}
}

void _handleKeyUp(KeyboardEvent event) {
switch (event.keyCode) {
case 37:
_controlState &= ~ControlState.left;
break;
case 38:
_controlState &= ~ControlState.up;
break;
case 39:
_controlState &= ~ControlState.right;
break;
case 40:
_controlState &= ~ControlState.down;
break;
}
}

Expand Down Expand Up @@ -179,8 +172,8 @@ void main() {
final racer = Racer();
racer.initialize();
racer.initializeAnimation();
final paragraph = ParagraphElement()
final paragraph = HTMLParagraphElement()
..innerText = 'Use the arrow keys to drive the car';
document.body?.nodes.add(paragraph);
document.body?.append(paragraph);
racer.runAnimation();
}
8 changes: 4 additions & 4 deletions packages/forge2d/example/web/racer/car.dart
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,15 @@ class Car {
switch (controlState & (ControlState.left | ControlState.right)) {
case ControlState.left:
desiredAngle = _lockAngle;
break;
case ControlState.right:
desiredAngle = -_lockAngle;
break;
}
final turnPerTimeStep = _turnSpeedPerSec * 1000 / time;
final angleNow = _frontLeftJoint.jointAngle();
final angleToTurn =
(desiredAngle - angleNow).clamp(-turnPerTimeStep, turnPerTimeStep);
final angleToTurn = (desiredAngle - angleNow).clamp(
-turnPerTimeStep,
turnPerTimeStep,
);
final angle = angleNow + angleToTurn;
_frontLeftJoint.setLimits(angle, angle);
_frontRightJoint.setLimits(angle, angle);
Expand Down
4 changes: 0 additions & 4 deletions packages/forge2d/example/web/racer/tire.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,8 @@ class Tire {
switch (controlState & (ControlState.up | ControlState.down)) {
case ControlState.up:
desiredSpeed = _maxForwardSpeed;
break;
case ControlState.down:
desiredSpeed = _maxBackwardSpeed;
break;
default:
return;
}
Expand All @@ -98,10 +96,8 @@ class Tire {
switch (controlState & (ControlState.left | ControlState.right)) {
case ControlState.left:
desiredTorque = 15.0;
break;
case ControlState.right:
desiredTorque = -15.0;
break;
}
body.applyTorque(desiredTorque);
}
Expand Down
Loading