source: trunk/src/engine/decal_group.cc @ 552

Last change on this file since 552 was 552, checked in by epyon, 8 years ago
  • missing files
File size: 1.7 KB
Line 
1// Copyright (C) 2016-2016 ChaosForge Ltd
2// http://chaosforge.org/
3//
4// This file is part of Nova libraries.
5// For conditions of distribution and use, see copying.txt file in root folder.
6
7#include "nv/engine/decal_group.hh"
8
9using namespace nv;
10
11
12decal_group_manager::decal_group_manager( context* a_context )
13        : m_context( a_context )
14{
15
16}
17
18decal_group decal_group_manager::create_group( uint32 max_particles )
19{
20        decal_group result = m_groups.create();
21        decal_group_info* info = m_groups.get( result );
22        info->local = false;
23        info->count = 0;
24        info->quota = max_particles;
25//      info->vtx_buffer = m_context->create_buffer( VERTEX_BUFFER, STREAM_DRAW, info->quota * sizeof( particle_quad )/*, info->quads_[0].data*/ );
26//      vertex_array_desc desc;
27//      desc.add_vertex_buffers< de >( info->vtx_buffer, true );
28//      info->vtx_array = m_context->create_vertex_array( desc );
29//      info->quads = new particle_quad[info->quota];
30        info->ref_counter = 0;
31        return result;
32}
33
34void decal_group_manager::release( decal_group group )
35{
36        if ( decal_group_info* info = m_groups.get( group ) )
37        {
38                release( info );
39                m_groups.destroy( group );
40        }
41}
42
43void decal_group_manager::release( decal_group_info* info )
44{
45        if ( info )
46        {
47                delete[] info->quads;
48                m_context->release( info->vtx_array );
49        }
50}
51
52
53void decal_group_manager::clear()
54{
55        for ( auto& g : m_groups )
56                release( &g );
57}
58
59bool decal_group_manager::ref( decal_group group )
60{
61        decal_group_info* info = m_groups.get( group );
62        if ( !info ) return false;
63        info->ref_counter++;
64        return true;
65}
66
67bool decal_group_manager::unref( decal_group group )
68{
69        decal_group_info* info = m_groups.get( group );
70        if ( !info ) return false;
71        info->ref_counter--;
72        return true;
73}
74
Note: See TracBrowser for help on using the repository browser.