rngine 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["gameMethods","Image","configure","world","screen","entities","systems","paused","setWorld","setScreen","setEntities","setSystems","pause","resume","spawn","entityArray","Array","isArray","despawn","id","updateEntity","entityUpdate","updateEntities","entityUpdates","updateScreen","screenUpdate","assetCache","WeakMap","nextId","loadAsset","asset","Error","has","get","assetId","set","isLottieLoaded","loadLottie","JSON","stringify","isAssetLoaded","assetUri","resolveAssetSource","uri","isLoaded","loadImage","loadAssets","assets","keys","Object","result","key"],"sourceRoot":"../../src","sources":["GameMethods.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["gameMethods","Image","configure","world","screen","entities","systems","paused","setWorld","setScreen","setEntities","setSystems","pause","resume","spawn","entityArray","Array","isArray","despawn","id","updateEntity","entityUpdate","updateEntities","entityUpdates","updateScreen","screenUpdate","assetCache","WeakMap","nextId","loadAsset","asset","Error","has","get","assetId","set","isLottieLoaded","loadLottie","JSON","stringify","isAssetLoaded","assetUri","resolveAssetSource","uri","isLoaded","loadImage","loadAssets","assets","keys","Object","result","key"],"sourceRoot":"../../src","sources":["GameMethods.ts"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Entity, EntityUpdate, ScreenUpdate } from './types.js';
1
+ import type { EntityInitializer, EntityUpdate, ScreenUpdate } from './types.js';
2
2
  import type { Config } from './types.js';
3
3
  /** Sets up the game engine with the given configuration. Call this before anything else. */
4
4
  export declare const configure: ({ world, screen, entities, systems, paused, }: Config) => void;
@@ -7,7 +7,7 @@ export declare const pause: () => void;
7
7
  /** Resumes the game loop. */
8
8
  export declare const resume: () => void;
9
9
  /** Spawns one or more entities into the world. Skips duplicates by id. */
10
- export declare const spawn: (entities: Entity | Entity[]) => void;
10
+ export declare const spawn: (entities: EntityInitializer | EntityInitializer[]) => void;
11
11
  /** Removes an entity or all entities matching the given id prefix from the world. Only the provided fields are changed. */
12
12
  export declare const despawn: (id: string) => void;
13
13
  /** Fires one update, applied to entities matching the given id prefix from the world. Only the provided fields are changed. */
@@ -1 +1 @@
1
- {"version":3,"file":"GameMethods.d.ts","sourceRoot":"","sources":["../../../src/GameMethods.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAS,CAAC;AAGtC,4FAA4F;AAC5F,eAAO,MAAM,SAAS,GAAI,+CAMvB,MAAM,SAUR,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,KAAK,YAA4B,CAAC;AAE/C,6BAA6B;AAC7B,eAAO,MAAM,MAAM,YAA6B,CAAC;AAEjD,0EAA0E;AAC1E,eAAO,MAAM,KAAK,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,SAGhD,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,SAA4B,CAAC;AAE/D,+HAA+H;AAC/H,eAAO,MAAM,YAAY,GAAI,cAAc,YAAY,SAEtD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,cAAc,GAAI,eAAe,YAAY,EAAE,SAE3D,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,YAAY,GAAI,cAAc,YAAY,SAEtD,CAAC;AA2CF;;yEAEyE;AACzE,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,CAAC,KACR,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAE,CASpC,CAAC"}
1
+ {"version":3,"file":"GameMethods.d.ts","sourceRoot":"","sources":["../../../src/GameMethods.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAS,CAAC;AAGtC,4FAA4F;AAC5F,eAAO,MAAM,SAAS,GAAI,+CAMvB,MAAM,SAUR,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,KAAK,YAA4B,CAAC;AAE/C,6BAA6B;AAC7B,eAAO,MAAM,MAAM,YAA6B,CAAC;AAEjD,0EAA0E;AAC1E,eAAO,MAAM,KAAK,GAAI,UAAU,iBAAiB,GAAG,iBAAiB,EAAE,SAGtE,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,SAA4B,CAAC;AAE/D,+HAA+H;AAC/H,eAAO,MAAM,YAAY,GAAI,cAAc,YAAY,SAEtD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,cAAc,GAAI,eAAe,YAAY,EAAE,SAE3D,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,YAAY,GAAI,cAAc,YAAY,SAEtD,CAAC;AA2CF;;yEAEyE;AACzE,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,CAAC,KACR,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAE,CASpC,CAAC"}
@@ -1,19 +1,19 @@
1
1
  import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { Entity, EntityUpdate, System, Screen, World, ScreenUpdate } from './types.js';
2
+ import type { EntityUpdate, System, ScreenUpdate, WorldInitializer, ScreenInitializer, EntityInitializer } from './types.js';
3
3
  interface GameMethods extends HybridObject<{
4
4
  ios: 'c++';
5
5
  android: 'c++';
6
6
  }> {
7
7
  /** Configuration Methods */
8
- setWorld(world: World): void;
9
- setScreen(screen: Screen): void;
10
- setEntities(entities: Entity[]): void;
8
+ setWorld(world: WorldInitializer): void;
9
+ setScreen(screen: ScreenInitializer): void;
10
+ setEntities(entities: EntityInitializer[]): void;
11
11
  setSystems(systems: System[]): void;
12
12
  /** Pause/Resume Methods */
13
13
  pause(): void;
14
14
  resume(): void;
15
15
  /** Entity Update Methods */
16
- spawn(entities: Entity[]): void;
16
+ spawn(entities: EntityInitializer[]): void;
17
17
  despawn(id: string): void;
18
18
  updateEntities(entityUpdates: EntityUpdate[]): void;
19
19
  /** Screen Update Methods */
@@ -1 +1 @@
1
- {"version":3,"file":"GameMethods.nitro.d.ts","sourceRoot":"","sources":["../../../src/GameMethods.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,MAAM,EACN,MAAM,EACN,KAAK,EACL,YAAY,EACb,MAAM,YAAS,CAAC;AAGjB,UAAU,WAAY,SAAQ,YAAY,CAAC;IACzC,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;CAChB,CAAC;IACA,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEpC,2BAA2B;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IAEf,4BAA4B;IAC5B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAEpD,4BAA4B;IAC5B,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAE/C,oBAAoB;IACpB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,WAAW,aACqC,CAAC"}
1
+ {"version":3,"file":"GameMethods.nitro.d.ts","sourceRoot":"","sources":["../../../src/GameMethods.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAS,CAAC;AAGjB,UAAU,WAAY,SAAQ,YAAY,CAAC;IACzC,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;CAChB,CAAC;IACA,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACjD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEpC,2BAA2B;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IAEf,4BAA4B;IAC5B,KAAK,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAEpD,4BAA4B;IAC5B,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAE/C,oBAAoB;IACpB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,WAAW,aACqC,CAAC"}
@@ -59,7 +59,7 @@ interface Kinematic {
59
59
  /** Mass in arbitrary units. */
60
60
  mass?: number;
61
61
  }
62
- export interface World {
62
+ export interface WorldInitializer {
63
63
  /** Number of game logic updates per second. */
64
64
  tickRate: number;
65
65
  /** Horizontal gravitational acceleration in game units per second squared. */
@@ -67,18 +67,27 @@ export interface World {
67
67
  /** Vertical gravitational acceleration in game units per second squared. */
68
68
  gy?: number;
69
69
  }
70
- export interface Screen extends Positioned, Rect, Renderable {
70
+ export type World = CustomType<Required<WorldInitializer>, 'margelo::nitro::rngine::World', {
71
+ include: 'World.hpp';
72
+ }>;
73
+ export interface ScreenInitializer extends Positioned, Rect, Renderable {
74
+ }
75
+ export type Screen = CustomType<Required<ScreenInitializer>, 'margelo::nitro::rngine::Screen', {
76
+ include: 'Screen.hpp';
77
+ }>;
78
+ export interface ScreenUpdate extends Partial<ScreenInitializer> {
71
79
  }
72
- export interface Entity extends Positioned, Shaped, Renderable, Kinematic {
80
+ export interface EntityInitializer extends Positioned, Shaped, Renderable, Kinematic {
73
81
  /** Unique identifier. Use `_` as a separator for group queries e.g. `'enemy_1'`. */
74
82
  id: string;
75
83
  }
84
+ export type Entity = CustomType<Required<EntityInitializer>, 'margelo::nitro::rngine::Entity', {
85
+ include: 'Entity.hpp';
86
+ }>;
76
87
  export interface EntityUpdate extends Partial<Positioned & Shaped & Renderable & Kinematic> {
77
88
  /** Unique identifier or prefix of the entities to update. */
78
89
  id: string;
79
90
  }
80
- export interface ScreenUpdate extends Partial<Screen> {
81
- }
82
91
  export type CollisionPair = CustomType<{
83
92
  /** Entity id or prefix of the first entity to watch. */
84
93
  a: string;
@@ -129,11 +138,11 @@ export type System = CustomType<{
129
138
  }>;
130
139
  export type Config = {
131
140
  /** World settings: tick rate and gravity. */
132
- world: World;
141
+ world: WorldInitializer;
133
142
  /** Screen dimensions and background. */
134
- screen: Screen;
143
+ screen: ScreenInitializer;
135
144
  /** Entities to spawn when the game starts. */
136
- entities?: Entity[];
145
+ entities?: EntityInitializer[];
137
146
  /** Systems that define game logic, each running every tick against its subscribed entities and collisions. */
138
147
  systems?: System[];
139
148
  /** Whether the game starts paused. Defaults to true. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  ///
2
- /// Entity.hpp
2
+ /// EntityInitializer.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
5
  /// Copyright © Marc Rousavy @ Margelo
@@ -48,9 +48,9 @@ namespace margelo::nitro::rngine { enum class Repeat; }
48
48
  namespace margelo::nitro::rngine {
49
49
 
50
50
  /**
51
- * A struct which can be represented as a JavaScript object (Entity).
51
+ * A struct which can be represented as a JavaScript object (EntityInitializer).
52
52
  */
53
- struct Entity final {
53
+ struct EntityInitializer final {
54
54
  public:
55
55
  std::string id SWIFT_PRIVATE;
56
56
  double px SWIFT_PRIVATE;
@@ -75,23 +75,23 @@ namespace margelo::nitro::rngine {
75
75
  std::optional<double> mass SWIFT_PRIVATE;
76
76
 
77
77
  public:
78
- Entity() = default;
79
- explicit Entity(std::string id, double px, double py, std::variant<Rect, Circle> shape, std::optional<double> angle, std::optional<bool> isSensor, std::optional<std::string> color, std::optional<double> asset, std::optional<bool> flipH, std::optional<bool> flipV, std::optional<ObjectFit> objectFit, std::optional<bool> clip, std::optional<Repeat> repeat, std::optional<double> progress, std::optional<double> speed, std::optional<bool> loop, std::optional<double> vx, std::optional<double> vy, std::optional<double> ax, std::optional<double> ay, std::optional<double> mass): id(id), px(px), py(py), shape(shape), angle(angle), isSensor(isSensor), color(color), asset(asset), flipH(flipH), flipV(flipV), objectFit(objectFit), clip(clip), repeat(repeat), progress(progress), speed(speed), loop(loop), vx(vx), vy(vy), ax(ax), ay(ay), mass(mass) {}
78
+ EntityInitializer() = default;
79
+ explicit EntityInitializer(std::string id, double px, double py, std::variant<Rect, Circle> shape, std::optional<double> angle, std::optional<bool> isSensor, std::optional<std::string> color, std::optional<double> asset, std::optional<bool> flipH, std::optional<bool> flipV, std::optional<ObjectFit> objectFit, std::optional<bool> clip, std::optional<Repeat> repeat, std::optional<double> progress, std::optional<double> speed, std::optional<bool> loop, std::optional<double> vx, std::optional<double> vy, std::optional<double> ax, std::optional<double> ay, std::optional<double> mass): id(id), px(px), py(py), shape(shape), angle(angle), isSensor(isSensor), color(color), asset(asset), flipH(flipH), flipV(flipV), objectFit(objectFit), clip(clip), repeat(repeat), progress(progress), speed(speed), loop(loop), vx(vx), vy(vy), ax(ax), ay(ay), mass(mass) {}
80
80
 
81
81
  public:
82
- friend bool operator==(const Entity& lhs, const Entity& rhs) = default;
82
+ friend bool operator==(const EntityInitializer& lhs, const EntityInitializer& rhs) = default;
83
83
  };
84
84
 
85
85
  } // namespace margelo::nitro::rngine
86
86
 
87
87
  namespace margelo::nitro {
88
88
 
89
- // C++ Entity <> JS Entity (object)
89
+ // C++ EntityInitializer <> JS EntityInitializer (object)
90
90
  template <>
91
- struct JSIConverter<margelo::nitro::rngine::Entity> final {
92
- static inline margelo::nitro::rngine::Entity fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
91
+ struct JSIConverter<margelo::nitro::rngine::EntityInitializer> final {
92
+ static inline margelo::nitro::rngine::EntityInitializer fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
93
93
  jsi::Object obj = arg.asObject(runtime);
94
- return margelo::nitro::rngine::Entity(
94
+ return margelo::nitro::rngine::EntityInitializer(
95
95
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "id"))),
96
96
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "px"))),
97
97
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "py"))),
@@ -115,7 +115,7 @@ namespace margelo::nitro {
115
115
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "mass")))
116
116
  );
117
117
  }
118
- static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::Entity& arg) {
118
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::EntityInitializer& arg) {
119
119
  jsi::Object obj(runtime);
120
120
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "id"), JSIConverter<std::string>::toJSI(runtime, arg.id));
121
121
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "px"), JSIConverter<double>::toJSI(runtime, arg.px));
@@ -13,20 +13,20 @@
13
13
  #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
14
  #endif
15
15
 
16
- // Forward declaration of `World` to properly resolve imports.
17
- namespace margelo::nitro::rngine { struct World; }
18
- // Forward declaration of `Screen` to properly resolve imports.
19
- namespace margelo::nitro::rngine { struct Screen; }
20
- // Forward declaration of `Entity` to properly resolve imports.
21
- namespace margelo::nitro::rngine { struct Entity; }
16
+ // Forward declaration of `WorldInitializer` to properly resolve imports.
17
+ namespace margelo::nitro::rngine { struct WorldInitializer; }
18
+ // Forward declaration of `ScreenInitializer` to properly resolve imports.
19
+ namespace margelo::nitro::rngine { struct ScreenInitializer; }
20
+ // Forward declaration of `EntityInitializer` to properly resolve imports.
21
+ namespace margelo::nitro::rngine { struct EntityInitializer; }
22
22
  // Forward declaration of `EntityUpdate` to properly resolve imports.
23
23
  namespace margelo::nitro::rngine { struct EntityUpdate; }
24
24
  // Forward declaration of `ScreenUpdate` to properly resolve imports.
25
25
  namespace margelo::nitro::rngine { struct ScreenUpdate; }
26
26
 
27
- #include "World.hpp"
28
- #include "Screen.hpp"
29
- #include "Entity.hpp"
27
+ #include "WorldInitializer.hpp"
28
+ #include "ScreenInitializer.hpp"
29
+ #include "EntityInitializer.hpp"
30
30
  #include <vector>
31
31
  #include "System.hpp"
32
32
  #include <string>
@@ -65,13 +65,13 @@ namespace margelo::nitro::rngine {
65
65
 
66
66
  public:
67
67
  // Methods
68
- virtual void setWorld(const World& world) = 0;
69
- virtual void setScreen(const Screen& screen) = 0;
70
- virtual void setEntities(const std::vector<Entity>& entities) = 0;
68
+ virtual void setWorld(const WorldInitializer& world) = 0;
69
+ virtual void setScreen(const ScreenInitializer& screen) = 0;
70
+ virtual void setEntities(const std::vector<EntityInitializer>& entities) = 0;
71
71
  virtual void setSystems(const std::vector<margelo::nitro::rngine::System>& systems) = 0;
72
72
  virtual void pause() = 0;
73
73
  virtual void resume() = 0;
74
- virtual void spawn(const std::vector<Entity>& entities) = 0;
74
+ virtual void spawn(const std::vector<EntityInitializer>& entities) = 0;
75
75
  virtual void despawn(const std::string& id) = 0;
76
76
  virtual void updateEntities(const std::vector<EntityUpdate>& entityUpdates) = 0;
77
77
  virtual void updateScreen(const ScreenUpdate& screenUpdate) = 0;
@@ -1,5 +1,5 @@
1
1
  ///
2
- /// Screen.hpp
2
+ /// ScreenInitializer.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
5
  /// Copyright © Marc Rousavy @ Margelo
@@ -41,9 +41,9 @@ namespace margelo::nitro::rngine { enum class Repeat; }
41
41
  namespace margelo::nitro::rngine {
42
42
 
43
43
  /**
44
- * A struct which can be represented as a JavaScript object (Screen).
44
+ * A struct which can be represented as a JavaScript object (ScreenInitializer).
45
45
  */
46
- struct Screen final {
46
+ struct ScreenInitializer final {
47
47
  public:
48
48
  double px SWIFT_PRIVATE;
49
49
  double py SWIFT_PRIVATE;
@@ -61,23 +61,23 @@ namespace margelo::nitro::rngine {
61
61
  std::optional<bool> loop SWIFT_PRIVATE;
62
62
 
63
63
  public:
64
- Screen() = default;
65
- explicit Screen(double px, double py, double width, double height, std::optional<std::string> color, std::optional<double> asset, std::optional<bool> flipH, std::optional<bool> flipV, std::optional<ObjectFit> objectFit, std::optional<bool> clip, std::optional<Repeat> repeat, std::optional<double> progress, std::optional<double> speed, std::optional<bool> loop): px(px), py(py), width(width), height(height), color(color), asset(asset), flipH(flipH), flipV(flipV), objectFit(objectFit), clip(clip), repeat(repeat), progress(progress), speed(speed), loop(loop) {}
64
+ ScreenInitializer() = default;
65
+ explicit ScreenInitializer(double px, double py, double width, double height, std::optional<std::string> color, std::optional<double> asset, std::optional<bool> flipH, std::optional<bool> flipV, std::optional<ObjectFit> objectFit, std::optional<bool> clip, std::optional<Repeat> repeat, std::optional<double> progress, std::optional<double> speed, std::optional<bool> loop): px(px), py(py), width(width), height(height), color(color), asset(asset), flipH(flipH), flipV(flipV), objectFit(objectFit), clip(clip), repeat(repeat), progress(progress), speed(speed), loop(loop) {}
66
66
 
67
67
  public:
68
- friend bool operator==(const Screen& lhs, const Screen& rhs) = default;
68
+ friend bool operator==(const ScreenInitializer& lhs, const ScreenInitializer& rhs) = default;
69
69
  };
70
70
 
71
71
  } // namespace margelo::nitro::rngine
72
72
 
73
73
  namespace margelo::nitro {
74
74
 
75
- // C++ Screen <> JS Screen (object)
75
+ // C++ ScreenInitializer <> JS ScreenInitializer (object)
76
76
  template <>
77
- struct JSIConverter<margelo::nitro::rngine::Screen> final {
78
- static inline margelo::nitro::rngine::Screen fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
77
+ struct JSIConverter<margelo::nitro::rngine::ScreenInitializer> final {
78
+ static inline margelo::nitro::rngine::ScreenInitializer fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
79
79
  jsi::Object obj = arg.asObject(runtime);
80
- return margelo::nitro::rngine::Screen(
80
+ return margelo::nitro::rngine::ScreenInitializer(
81
81
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "px"))),
82
82
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "py"))),
83
83
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "width"))),
@@ -94,7 +94,7 @@ namespace margelo::nitro {
94
94
  JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "loop")))
95
95
  );
96
96
  }
97
- static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::Screen& arg) {
97
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::ScreenInitializer& arg) {
98
98
  jsi::Object obj(runtime);
99
99
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "px"), JSIConverter<double>::toJSI(runtime, arg.px));
100
100
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "py"), JSIConverter<double>::toJSI(runtime, arg.py));
@@ -1,5 +1,5 @@
1
1
  ///
2
- /// World.hpp
2
+ /// WorldInitializer.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
5
  /// Copyright © Marc Rousavy @ Margelo
@@ -35,38 +35,38 @@
35
35
  namespace margelo::nitro::rngine {
36
36
 
37
37
  /**
38
- * A struct which can be represented as a JavaScript object (World).
38
+ * A struct which can be represented as a JavaScript object (WorldInitializer).
39
39
  */
40
- struct World final {
40
+ struct WorldInitializer final {
41
41
  public:
42
42
  double tickRate SWIFT_PRIVATE;
43
43
  std::optional<double> gx SWIFT_PRIVATE;
44
44
  std::optional<double> gy SWIFT_PRIVATE;
45
45
 
46
46
  public:
47
- World() = default;
48
- explicit World(double tickRate, std::optional<double> gx, std::optional<double> gy): tickRate(tickRate), gx(gx), gy(gy) {}
47
+ WorldInitializer() = default;
48
+ explicit WorldInitializer(double tickRate, std::optional<double> gx, std::optional<double> gy): tickRate(tickRate), gx(gx), gy(gy) {}
49
49
 
50
50
  public:
51
- friend bool operator==(const World& lhs, const World& rhs) = default;
51
+ friend bool operator==(const WorldInitializer& lhs, const WorldInitializer& rhs) = default;
52
52
  };
53
53
 
54
54
  } // namespace margelo::nitro::rngine
55
55
 
56
56
  namespace margelo::nitro {
57
57
 
58
- // C++ World <> JS World (object)
58
+ // C++ WorldInitializer <> JS WorldInitializer (object)
59
59
  template <>
60
- struct JSIConverter<margelo::nitro::rngine::World> final {
61
- static inline margelo::nitro::rngine::World fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
60
+ struct JSIConverter<margelo::nitro::rngine::WorldInitializer> final {
61
+ static inline margelo::nitro::rngine::WorldInitializer fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
62
62
  jsi::Object obj = arg.asObject(runtime);
63
- return margelo::nitro::rngine::World(
63
+ return margelo::nitro::rngine::WorldInitializer(
64
64
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "tickRate"))),
65
65
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gx"))),
66
66
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "gy")))
67
67
  );
68
68
  }
69
- static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::World& arg) {
69
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rngine::WorldInitializer& arg) {
70
70
  jsi::Object obj(runtime);
71
71
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "tickRate"), JSIConverter<double>::toJSI(runtime, arg.tickRate));
72
72
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "gx"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.gx));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rngine",
3
- "version": "0.11.5",
3
+ "version": "0.12.0",
4
4
  "description": "React Native 2D game engine powered by Nitro Modules",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -189,9 +189,9 @@ void GameLoop::updateStats(double deltaTime) {
189
189
 
190
190
  void GameLoop::updateScreen(double deltaTime) {
191
191
  std::lock_guard<std::mutex> lock(_mutex);
192
- if (_screen.asset.has_value()) {
192
+ if (_screen.asset != 0) {
193
193
  AssetUtils::updateProgress(_screen.progress, _screen.speed, _screen.loop,
194
- _screen.asset.value(), deltaTime);
194
+ _screen.asset, deltaTime);
195
195
  }
196
196
  }
197
197
 
@@ -201,33 +201,19 @@ void GameLoop::updateEntities(double deltaTime) {
201
201
 
202
202
  for (auto &[id, entity] : _entities) {
203
203
 
204
- if (entity.mass.has_value() && entity.mass.value() > 0.0) {
205
- if (_world.gx.has_value()) {
206
- entity.vx = entity.vx.value_or(0.0) + _world.gx.value() * deltaTime;
207
- }
208
- if (_world.gy.has_value()) {
209
- entity.vy = entity.vy.value_or(0.0) + _world.gy.value() * deltaTime;
210
- }
204
+ if (entity.mass > 0.0) {
205
+ entity.vx = entity.vx + _world.gx * deltaTime;
206
+ entity.vy = entity.vy + _world.gy * deltaTime;
211
207
  }
212
208
 
213
- if (entity.ax.has_value()) {
214
- entity.vx = entity.vx.value_or(0.0) + entity.ax.value() * deltaTime;
215
- }
216
- if (entity.ay.has_value()) {
217
- entity.vy = entity.vy.value_or(0.0) + entity.ay.value() * deltaTime;
218
- }
209
+ entity.vx = entity.vx + entity.ax * deltaTime;
210
+ entity.vy = entity.vy + entity.ay * deltaTime;
219
211
 
220
- if (entity.vx.has_value()) {
221
- entity.px += entity.vx.value() * deltaTime;
222
- }
223
- if (entity.vy.has_value()) {
224
- entity.py += entity.vy.value() * deltaTime;
225
- }
212
+ entity.px += entity.vx * deltaTime;
213
+ entity.py += entity.vy * deltaTime;
226
214
 
227
- if (entity.asset.has_value()) {
228
- AssetUtils::updateProgress(entity.progress, entity.speed, entity.loop,
229
- entity.asset.value(), deltaTime);
230
- }
215
+ AssetUtils::updateProgress(entity.progress, entity.speed, entity.loop,
216
+ entity.asset, deltaTime);
231
217
  }
232
218
  }
233
219
 
@@ -266,15 +252,11 @@ void GameLoop::resolveCollisions() {
266
252
  Entity &a = itA->second;
267
253
  Entity &b = itB->second;
268
254
 
269
- if (a.isSensor.value_or(false) || b.isSensor.value_or(false))
255
+ if (a.isSensor || b.isSensor)
270
256
  continue;
271
257
 
272
- double inverseMassA = (a.mass.has_value() && a.mass.value() > 0.0)
273
- ? 1.0 / a.mass.value()
274
- : 0.0;
275
- double inverseMassB = (b.mass.has_value() && b.mass.value() > 0.0)
276
- ? 1.0 / b.mass.value()
277
- : 0.0;
258
+ double inverseMassA = a.mass > 0.0 ? 1.0 / a.mass : 0.0;
259
+ double inverseMassB = b.mass > 0.0 ? 1.0 / b.mass : 0.0;
278
260
  double totalInverseMass = inverseMassA + inverseMassB;
279
261
  if (totalInverseMass == 0.0)
280
262
  continue;
@@ -286,8 +268,8 @@ void GameLoop::resolveCollisions() {
286
268
  b.px += c.nx * correction * inverseMassB;
287
269
  b.py += c.ny * correction * inverseMassB;
288
270
 
289
- double avx = a.vx.value_or(0.0), avy = a.vy.value_or(0.0);
290
- double bvx = b.vx.value_or(0.0), bvy = b.vy.value_or(0.0);
271
+ double avx = a.vx, avy = a.vy;
272
+ double bvx = b.vx, bvy = b.vy;
291
273
  double relativeVx = bvx - avx, relativeVy = bvy - avy;
292
274
  double velocityAlongNormal = relativeVx * c.nx + relativeVy * c.ny;
293
275
  if (velocityAlongNormal > 0)