import tables

, ../drawable/[ shape_object
                    , text_types
                    , plane
                    ]

, ../deshn_entity/[ being 
                          ]

, ../vk/[ vulkan
        , vkTypes
        , depth_stencil
        , buffer
        ]

type
 Scene_Object = object of RootObj    
  device*: ptr VkDevice
  entities*: TableRef[string, int]
  shapes*: seq[Shape]
  #texts*: seq[SDFText]
  planes*: seq[Plane]
  deshn_beings*: seq[Deshn_Being]
  current_entity_id*: int 
  vertex_buffer*: Buffer
  index_buffer*: Buffer
  staging_vertex_buffer*: Buffer
  staging_index_buffer*:  Buffer
  #render_pass_begin_info*: VkRenderPassBeginInfo
  #scissor*: VkRect2D
  #render_pass*: VkRenderPass
  #depth_stencil*: Depth_Stencil
  present_info*: VkPresentInfoKHR
  
  # TODO: a better way , instead of having to redundantly copy vertices and indices
  the_vertices*: seq[float32]
  the_indices*: seq[uint32]
  indirect_commands*: seq[VkDrawIndexedIndirectCommand]

 Scene* = ref object of Scene_Object