Compare commits
2 Commits
f49651384c
...
3eb0c2555f
| Author | SHA1 | Date | |
|---|---|---|---|
| 3eb0c2555f | |||
| be8c936e33 |
+6
-4
@@ -306,8 +306,6 @@ end_frame :: proc(state: ^engine_state)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glfw.SwapBuffers(state.window)
|
|
||||||
__e2d_interal.viewport_changed = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup :: proc(state: ^engine_state)
|
cleanup :: proc(state: ^engine_state)
|
||||||
@@ -356,13 +354,14 @@ is_key_released :: #force_inline proc(state: ^engine_state, key : i32) -> bool{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
draw_flush :: proc(d: ^e2_draw.Draw)
|
draw_flush :: proc(state: ^engine_state)
|
||||||
{
|
{
|
||||||
|
d := &state.draw
|
||||||
if __e2d_interal.viewport_changed
|
if __e2d_interal.viewport_changed
|
||||||
{
|
{
|
||||||
d.glyph.atlas_width = d.cam.width
|
d.glyph.atlas_width = d.cam.width
|
||||||
d.glyph.atlas_height = d.cam.height
|
d.glyph.atlas_height = d.cam.height
|
||||||
d.glyph.font_size_pt = 9
|
d.glyph.font_size_pt = 12
|
||||||
d.glyph.width = d.cam.width
|
d.glyph.width = d.cam.width
|
||||||
d.glyph.height = d.cam.height
|
d.glyph.height = d.cam.height
|
||||||
|
|
||||||
@@ -370,5 +369,8 @@ draw_flush :: proc(d: ^e2_draw.Draw)
|
|||||||
|
|
||||||
}
|
}
|
||||||
e2_draw.draw_flush(d, __e2d_interal.viewport_changed)
|
e2_draw.draw_flush(d, __e2d_interal.viewport_changed)
|
||||||
|
|
||||||
|
glfw.SwapBuffers(state.window)
|
||||||
|
__e2d_interal.viewport_changed = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -102,14 +102,11 @@ compare_engine_entity_def :: proc(a, b : engine_entity_def) -> bool
|
|||||||
//ret &= a.vertices[:] == b.vertices[:]
|
//ret &= a.vertices[:] == b.vertices[:]
|
||||||
ret &= a.name_buf == b.name_buf
|
ret &= a.name_buf == b.name_buf
|
||||||
|
|
||||||
if a.entity_flags != b.entity_flags{
|
|
||||||
fmt.println("Hello world")
|
|
||||||
}
|
|
||||||
ret &= a.entity_flags == b.entity_flags
|
ret &= a.entity_flags == b.entity_flags
|
||||||
ret &= a.index == b.index
|
ret &= a.index == b.index
|
||||||
|
|
||||||
ret &= a.body_count == b.body_count
|
ret &= a.body_count == b.body_count
|
||||||
ret &= a.rev_joint == b.rev_joint
|
ret &= a.rev_joint == b.rev_joint
|
||||||
//ret &= a.link_length[:] == b.link_length[:]
|
//ret &= a.link_length[:] == b.link_length[:]
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|||||||
+18
-3
@@ -2,6 +2,7 @@ package edit2d
|
|||||||
|
|
||||||
import b2 "vendor:box2d"
|
import b2 "vendor:box2d"
|
||||||
//import im "shared:odin-imgui"
|
//import im "shared:odin-imgui"
|
||||||
|
import "core:fmt"
|
||||||
import "vendor:glfw"
|
import "vendor:glfw"
|
||||||
import "base:runtime"
|
import "base:runtime"
|
||||||
import draw "./draw"
|
import draw "./draw"
|
||||||
@@ -70,6 +71,14 @@ handle_entity_mode :: proc(
|
|||||||
input := &state.input
|
input := &state.input
|
||||||
mpos := draw.camera_convert_screen_to_world(&state.draw.cam, input.mouse)
|
mpos := draw.camera_convert_screen_to_world(&state.draw.cam, input.mouse)
|
||||||
|
|
||||||
|
if interface.selected_entity != -1
|
||||||
|
{
|
||||||
|
def := &level.entity_defs[interface.selected_entity]
|
||||||
|
{
|
||||||
|
draw.solid_circle_add(&interface.state.draw.solid_circles, {p = def.body_def.position, q = {c = 1} }, 0.2, {1, 0, 0, 1})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Setlect entity
|
//Setlect entity
|
||||||
if is_key_pressed(state, glfw.MOUSE_BUTTON_LEFT)
|
if is_key_pressed(state, glfw.MOUSE_BUTTON_LEFT)
|
||||||
{
|
{
|
||||||
@@ -78,11 +87,17 @@ handle_entity_mode :: proc(
|
|||||||
}
|
}
|
||||||
else if is_key_pressed(state, glfw.MOUSE_BUTTON_RIGHT)
|
else if is_key_pressed(state, glfw.MOUSE_BUTTON_RIGHT)
|
||||||
{
|
{
|
||||||
|
|
||||||
new_def := E {
|
new_def := E {
|
||||||
engine = default_engine_entity_def(),
|
engine = default_engine_entity_def(),
|
||||||
type = .NPC
|
type = .NPC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
x_pos, y_pos := glfw.GetCursorPos(state.window)
|
||||||
|
pos := draw.camera_convert_screen_to_world_32(&state.draw.cam, {f32(x_pos), f32(y_pos)})
|
||||||
|
new_def.body_def.position = pos
|
||||||
|
|
||||||
|
|
||||||
interface.selected_entity = i32(len(level.entity_defs))
|
interface.selected_entity = i32(len(level.entity_defs))
|
||||||
append(&level.entity_defs, new_def)
|
append(&level.entity_defs, new_def)
|
||||||
ret = true
|
ret = true
|
||||||
@@ -181,17 +196,17 @@ handle_input :: proc(
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ret := false
|
||||||
#partial switch game.interface.edit_mode
|
#partial switch game.interface.edit_mode
|
||||||
{
|
{
|
||||||
case .ENTITY : handle_entity_mode(E, state, game_data)
|
case .ENTITY : ret = handle_entity_mode(E, state, game_data)
|
||||||
// case .VERTICES : interface_handle_vertices_mode(state, game_data)
|
// case .VERTICES : interface_handle_vertices_mode(state, game_data)
|
||||||
// case .OVERVIEW : interface_handle_overview_mode(state, game_data)
|
// case .OVERVIEW : interface_handle_overview_mode(state, game_data)
|
||||||
// case .CHAIN : interface_handle_chain_mode(state, game_data)
|
// case .CHAIN : interface_handle_chain_mode(state, game_data)
|
||||||
// case .JOINT : interface_handle_joint_mode(state, game_data)
|
// case .JOINT : interface_handle_joint_mode(state, game_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return ret
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+10
-3
@@ -169,7 +169,7 @@ mu_interface_draw_options :: proc(state: ^engine_state)
|
|||||||
|
|
||||||
|
|
||||||
interface_all :: proc($E: typeid, interface: ^interface_state, game_data : $G) -> bool
|
interface_all :: proc($E: typeid, interface: ^interface_state, game_data : $G) -> bool
|
||||||
{
|
{
|
||||||
ret := false
|
ret := false
|
||||||
if interface.selected_entity <0
|
if interface.selected_entity <0
|
||||||
{
|
{
|
||||||
@@ -177,6 +177,9 @@ interface_all :: proc(interface: ^interface_state) -> bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if handle_input(E, interface.state, game_data) do return true
|
||||||
|
|
||||||
|
state := interface.state
|
||||||
mu.begin(&state.mu_ctx)
|
mu.begin(&state.mu_ctx)
|
||||||
|
|
||||||
//test_window(&state.mu_ctx)
|
//test_window(&state.mu_ctx)
|
||||||
@@ -187,9 +190,13 @@ interface_all :: proc(interface: ^interface_state) -> bool
|
|||||||
if mu.begin_window(&state.mu_ctx, "B2d Interface", {1630, 170, 250, 450})
|
if mu.begin_window(&state.mu_ctx, "B2d Interface", {1630, 170, 250, 450})
|
||||||
{
|
{
|
||||||
|
|
||||||
{
|
if interface.edit_mode == .ENTITY
|
||||||
|
{
|
||||||
if .ACTIVE in mu.header(&state.mu_ctx, "Entity", {.AUTO_SIZE})
|
if .ACTIVE in mu.header(&state.mu_ctx, "Entity", {.AUTO_SIZE})
|
||||||
}
|
{
|
||||||
|
if interface_entity(interface) do ret = true
|
||||||
|
}
|
||||||
|
}
|
||||||
mu.end_window(&state.mu_ctx)
|
mu.end_window(&state.mu_ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-2
@@ -375,6 +375,8 @@ interface_entity :: proc(interface: ^interface_state) -> bool
|
|||||||
{
|
{
|
||||||
entity_selected := (interface.selected_entity != -1) && len(interface.entity_defs) > 0
|
entity_selected := (interface.selected_entity != -1) && len(interface.entity_defs) > 0
|
||||||
|
|
||||||
|
ctx := &interface.state.mu_ctx
|
||||||
|
|
||||||
if entity_selected
|
if entity_selected
|
||||||
{
|
{
|
||||||
def := interface.entity_defs[interface.selected_entity]
|
def := interface.entity_defs[interface.selected_entity]
|
||||||
@@ -386,8 +388,16 @@ interface_entity :: proc(interface: ^interface_state) -> bool
|
|||||||
//Flags
|
//Flags
|
||||||
for flag in engine_entity_flags_enum
|
for flag in engine_entity_flags_enum
|
||||||
{
|
{
|
||||||
//contains := flag in def.entity_flags
|
contains := flag in def.entity_flags
|
||||||
//if mu.checkbox(fmt.tprint(flag), &contains) do def.entity_flags ~= {flag}
|
if .CHANGE in mu.checkbox(ctx, fmt.tprint(flag), &contains)
|
||||||
|
{
|
||||||
|
def.entity_flags ~= {flag}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Draw circle on selected entity
|
||||||
|
{
|
||||||
|
draw.solid_circle_add(&interface.state.draw.solid_circles, {p = def.body_def.position, q = {c = 1} }, 0.2, {1, 0, 0, 1})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user