renamed 'entity_manager' to 'scene'
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 31 Jan 2022 14:18:44 +0000 (08:18 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 31 Jan 2022 14:18:44 +0000 (08:18 -0600)
src/entity/editor.onyx
src/entity/player.onyx
src/main.onyx

index 8044048f2f0bba5f3062d1de851daab92ce28f50..9fdae6f84ff11ae88672f9665238f6601fa33284 100644 (file)
@@ -44,8 +44,8 @@ editor_update :: (dt: f32) {
 
     if is_button_just_down(GLFW_MOUSE_BUTTON_LEFT) && mouse_pos.x < ~~window_width - sidebar_width && mouse_pos.y > menubar_height {
         selected_entity_id = Entity_Nothing;
-        for entity_manager.entities {
-            get_rect := entity_manager.entity_types[it.type].get_rect;
+        for scene.entities {
+            get_rect := scene.entity_types[it.type].get_rect;
             if get_rect == null_proc do continue;
 
             if get_rect(it) |> Rect.contains(mouse_pos) {
@@ -62,7 +62,7 @@ editor_update :: (dt: f32) {
     }
 
     if selected_entity_id != Entity_Nothing && active_tab == .Edit {
-        selected_entity := entity_manager->get(selected_entity_id);
+        selected_entity := scene->get(selected_entity_id);
 
         if dragging {
             selected_entity.pos += mouse_get_delta_vector();
@@ -76,12 +76,12 @@ editor_update :: (dt: f32) {
 }
 
 editor_draw :: () {
-    entity_manager->draw();
+    scene->draw();
     immediate_flush();
 
     if selected_entity_id != Entity_Nothing {
-        selected_entity := entity_manager->get(selected_entity_id);
-        get_rect := entity_manager.entity_types[selected_entity.type].get_rect;
+        selected_entity := scene->get(selected_entity_id);
+        get_rect := scene.entity_types[selected_entity.type].get_rect;
 
         r := get_rect(selected_entity);
         immediate_set_color(.{1,1,0,0.5});
@@ -102,7 +102,7 @@ editor_draw :: () {
 
         x = 2;
         y += 2;
-        h = 36;
+        h -= 4;
         w = 100;
 
         for type_info.enum_values(Tabs) {
@@ -149,7 +149,7 @@ editor_draw :: () {
 
             case .Edit {
                 if selected_entity_id != Entity_Nothing {
-                    selected_entity := entity_manager->get(selected_entity_id);
+                    selected_entity := scene->get(selected_entity_id);
                     render_entity_fields(selected_entity, x, y, w, h);
                 }
             }
@@ -199,7 +199,7 @@ editor_draw :: () {
 
         } elseif it.type == Entity_ID {
             value_buf: [1024] u8;
-            entity_type := (entity_manager->get(*cast(^Entity_ID) member_any.data)).type; // Dereferencing null here
+            entity_type := (scene->get(*cast(^Entity_ID) member_any.data)).type; // Dereferencing null here
             value_str := conv.format_va(value_buf, "{} ({})", .[member_any, .{^entity_type, type_expr}]);
             font_print(editor_font, x + w - font_get_width(editor_font, value_str) - 2, y + Field_Height, value_str);
 
index a71fa459ffca480cfbc6221dc3d89efcf6bb5d66..b1c6a366a11a3e471169395ea95fe0c6972f572d 100644 (file)
@@ -65,7 +65,7 @@ Player :: struct {
         if is_key_down(controls.left)  do delta.x -= speed * dt; 
         if is_key_down(controls.right) do delta.x += speed * dt; 
 
-        walls := entity_manager->query_by_flags(.{pos.x - 100, pos.y - 100, 200, 200}, .Solid);
+        walls := scene->query_by_flags(.{pos.x - 100, pos.y - 100, 200, 200}, .Solid);
         defer memory.free_slice(^walls);
 
         try_move(this, .{delta.x, 0}, walls);
@@ -78,9 +78,9 @@ Player :: struct {
         //
         if is_key_just_up(controls.pick_up) {
             if holding != Entity_Nothing {
-                holding_object := entity_manager->get(holding);
+                holding_object := scene->get(holding);
                 holding_object.flags |= .Carryable;
-                vtable := ^entity_manager.entity_types[holding_object.type];
+                vtable := ^scene.entity_types[holding_object.type];
                 if vtable.get_rect != null_proc {
                     r := vtable.get_rect(holding_object);
                     holding_object.pos = pos + .{Size + r.w / 2 + 4, 0};
@@ -89,7 +89,7 @@ Player :: struct {
 
             } else {
                 area    := Rect.{pos.x - Size * 2, pos.y - Size * 2, Size * 4, Size * 4};
-                objects := entity_manager->query_by_flags(area, .Carryable);
+                objects := scene->query_by_flags(area, .Carryable);
                 defer memory.free_slice(^objects);
 
                 // This should first sort by the distance to the object
@@ -112,11 +112,11 @@ Player :: struct {
         //
         if is_key_just_up(controls.interact) {
             area    := Rect.{pos.x - Size * 2, pos.y - Size * 2, Size * 4, Size * 4};
-            objects := entity_manager->query_by_flags(area, .Interactable);
+            objects := scene->query_by_flags(area, .Interactable);
             defer memory.free_slice(^objects);
 
             for objects {
-                vtable := ^entity_manager.entity_types[it.type];
+                vtable := ^scene.entity_types[it.type];
                 if vtable.interact == null_proc do continue;
                 vtable.interact(it, this);
             }
@@ -127,8 +127,8 @@ Player :: struct {
         // to be above the players head.
         //
         if holding != Entity_Nothing {
-            holding_object := entity_manager->get(holding);
-            vtable := ^entity_manager.entity_types[holding_object.type];
+            holding_object := scene->get(holding);
+            vtable := ^scene.entity_types[holding_object.type];
             if vtable.get_rect != null_proc {
                 r := vtable.get_rect(holding_object);
                 holding_object.pos = pos - .{0, Size + r.h / 2};
@@ -146,7 +146,7 @@ Player :: struct {
             if it == this do continue;
             if it.id == this.holding do continue;
 
-            vtable := ^entity_manager.entity_types[it.type];
+            vtable := ^scene.entity_types[it.type];
             if Rect.intersects(ent_rect, vtable.get_rect(~~ it)) {
                 pos -= delta;
                 break;
index 52f848773d14b172d78146554320bbe6a6119273..8c401231ae735be3e7af213ff3ecf0960c553365 100644 (file)
@@ -9,13 +9,15 @@ DEBUG :: #defined(runtime.vars.DEBUG)
 @GlobalVariable
 window: GLFWwindow_p
 
+@GlobalVariable
+scene: Entity_Manager;
+
 @GlobalVariable
 window_width: u32
 window_height: u32
 
 #if DEBUG { debug_font: Font; }
 
-entity_manager: Entity_Manager;
 
 init :: () {
     create_window();
@@ -42,27 +44,27 @@ init :: () {
 
     #if DEBUG { debug_font = font_lookup(.{"./assets/fonts/calibri.ttf", 16}); }
 
-    entity_manager = entity_manager_create();
-    entity_manager->make(Player, .{ pos = .{300, 300}, controls=player_1_controls });
-    entity_manager->make(Player, .{ pos = .{400, 300}, controls=player_2_controls, color=.{1,0,0} });
+    scene = entity_manager_create();
+    scene->make(Player, .{ pos = .{300, 300}, controls=player_1_controls });
+    scene->make(Player, .{ pos = .{400, 300}, controls=player_2_controls, color=.{1,0,0} });
 
-    entity_manager->make(Wall, .{ .{100, 100}, .{400, 50} });
-    // entity_manager->make(Wall, .{ .{100, 100}, .{50, 400} });
-    // entity_manager->make(Wall, .{ .{450, 100}, .{50, 400} });
-    // entity_manager->make(Wall, .{ .{100, 450}, .{400, 50} });
+    scene->make(Wall, .{ .{100, 100}, .{400, 50} });
+    // scene->make(Wall, .{ .{100, 100}, .{50, 400} });
+    // scene->make(Wall, .{ .{450, 100}, .{50, 400} });
+    // scene->make(Wall, .{ .{100, 450}, .{400, 50} });
 
-    entity_manager->make(Door, .{ .{150, 150}, .{50, 50} });
-    entity_manager->make(Door, .{ .{400, 150}, .{50, 50} });
-    entity_manager->make(Door, .{ .{400, 400}, .{50, 50} });
-    entity_manager->make(Door, .{ .{150, 400}, .{50, 50} });
+    scene->make(Door, .{ .{150, 150}, .{50, 50} });
+    scene->make(Door, .{ .{400, 150}, .{50, 50} });
+    scene->make(Door, .{ .{400, 400}, .{50, 50} });
+    scene->make(Door, .{ .{150, 400}, .{50, 50} });
 
-    entity_manager->make(Item, .{ pos=.{ 250, 250 }, color=.{1,0,0} });
-    entity_manager->make(Item, .{ pos=.{ 275, 250 }, color=.{0,1,0} });
-    entity_manager->make(Item, .{ pos=.{ 300, 250 }, color=.{0,0,1} });
+    scene->make(Item, .{ pos=.{ 250, 250 }, color=.{1,0,0} });
+    scene->make(Item, .{ pos=.{ 275, 250 }, color=.{0,1,0} });
+    scene->make(Item, .{ pos=.{ 300, 250 }, color=.{0,0,1} });
     
     #if DEBUG {
         println("Registered Entity types:");
-        for entity_manager.entity_types.entries {
+        for scene.entity_types.entries {
             info := cast(^type_info.Type_Info_Struct) type_info.get_type_info(it.key);
             printf("    {}\n", info.name);
         }
@@ -86,7 +88,7 @@ update :: (dt: f32) {
         return;
     }
 
-    entity_manager->update(dt);
+    scene->update(dt);
 }
 
 draw :: () {
@@ -117,7 +119,7 @@ draw :: () {
         return;
     }
 
-    entity_manager->draw();
+    scene->draw();
 
     #if false {
         mx, my := mouse_get_position();