Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
   Copyright (c) 2017 DIVIDE-Studio
   Copyright (c) 2009 Ionut Cava

   This file is part of DIVIDE Framework.

   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software
   and associated documentation files (the "Software"), to deal in the Software
   without restriction,
   including without limitation the rights to use, copy, modify, merge, publish,
   distribute, sublicense,
   and/or sell copies of the Software, and to permit persons to whom the
   Software is furnished to do so,
   subject to the following conditions:

   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   IMPLIED,
   INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
   PARTICULAR PURPOSE AND NONINFRINGEMENT.
   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
   DAMAGES OR OTHER LIABILITY,
   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
   IN CONNECTION WITH THE SOFTWARE
   OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 */

#ifndef _PARTICLE_SOURCE_H_
#define _PARTICLE_SOURCE_H_

#include "ParticleGenerator.h"

namespace Divide {

class ParticleSource {
   public:
    ParticleSource(GFXDevice& context);
    ParticleSource(GFXDevice& context, F32 emitRate);
    virtual ~ParticleSource();

    virtual void emit(const U64 deltaTime, std::shared_ptr<ParticleData> p);

    inline void addGenerator(std::shared_ptr<ParticleGenerator> generator) {
        _particleGenerators.push_back(generator);
    }

    inline void updateEmitRate(F32 emitRate) { _emitRate = emitRate; }

    inline F32 emitRate() const { return _emitRate; }

    inline void updateTransform(const vec3<F32>& position, const Quaternion<F32>& orientation) {
        for (std::shared_ptr<ParticleGenerator> generator : _particleGenerators) {
            generator->updateTransform(position, orientation);
        }
    }

   protected:
    F32 _emitRate;
    GFXDevice& _context;
    vectorImpl<std::shared_ptr<ParticleGenerator> > _particleGenerators;
};
};
#endif

Commits for Divide-Framework/trunk/Source Code/Dynamics/Entities/Particles/Headers/ParticleSource.h

Diff revisions: vs.
Revision Author Commited Message
909 Diff Diff IonutCava picture IonutCava Thu 29 Jun, 2017 23:57:18 +0000

[Ionut]
- Rework RenderTarget class
— RTAttachment now deal with textures directly
— RT size needs to be specified upfront
- Application class is no longer a Singleton but passed around in the PlatformContext

836 Diff Diff IonutCava picture IonutCava Fri 27 Jan, 2017 14:59:56 +0000

[IonutCava]
- Update copyright notice

671 Diff Diff IonutCava picture IonutCava Fri 08 Apr, 2016 16:26:49 +0000

[Ionut]
- Custom memory allocation system part 1:
— Add http://www.codeproject.com/Articles/1089905/A-Custom-STL-std-allocator-Replacement-Improves-Pe
— Add custom allocators to strings and vectors
— Add custom allocators to a few test classes
— No support for aligned memory yet, so vec4<F32> and mat4<F32> vectors use the old allocation system
- Replace more std::async call with our custom task system

648 Diff Diff IonutCava picture IonutCava Sun 21 Feb, 2016 16:32:52 +0000

[IonutCava]
- Update copyright notice
- Move BoundingBox and BoundingSphere to a new BoundsComponent
— Add a temp hack in SceneGraphNode to update these

599 Diff Diff IonutCava picture IonutCava Mon 07 Dec, 2015 22:31:39 +0000

[IonutCava]
- Bounding box calculation updates for particle systems and skybox
- Small optimization for the particle shader

568 Diff Diff IonutCava picture IonutCava Mon 16 Nov, 2015 16:32:35 +0000

[IonutCava]
- Apply SGN transforms to particle emitters
- Fix some GLSL casts

541 Diff Diff IonutCava picture IonutCava Thu 29 Oct, 2015 17:03:27 +0000

[IonutCava]
- Initial work on multi-threading the main loop (experimental. unstable):
— Multi-threaded frustum culling
— Multi-threaded particle update system

521 Diff Diff IonutCava picture IonutCava Tue 06 Oct, 2015 16:12:58 +0000

[IonutCava]
- Performance improvements:
— Upload an entire animation’s bone data instead of the current frame’s data and bind the appropriate frame’s transform range.
-— Sacrifices VRAM but reduces the number of RAM->VRAM uploads for animated characters
— Some refactoring in the particle code (emitter, generators, updaters, etc)
- Bugfix:
— Default texture wrap mode to REPEAT instead of CLAMP as ASSIMP seems to be failing at reading texture wrap modes and REPEAT is a safer bet.

353 IonutCava picture IonutCava Tue 17 Feb, 2015 17:08:27 +0000

[Ionut]
- Compatibility updates for Boost 1.57 (some warnings still exist for now)
- Fixed some non-conforming code
- Added ALL OF THE MISSING FILES FROM THE LAST 15 commits ...........