-
Notifications
You must be signed in to change notification settings - Fork 321
Expand file tree
/
Copy pathEmitterModule.cpp
More file actions
66 lines (58 loc) · 2.9 KB
/
EmitterModule.cpp
File metadata and controls
66 lines (58 loc) · 2.9 KB
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
//
// Created by sjeske on 1/24/20.
//
#include "common.h"
#include <SPlisHSPlasH/Emitter.h>
#include <SPlisHSPlasH/EmitterSystem.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/stl_bind.h>
#include <pybind11/eigen.h>
#include "bind_pointer_vector.h"
namespace py = pybind11;
void EmitterModule(py::module m_sub){
// ---------------------------------------
// Emitter Class
// ---------------------------------------
py::class_<SPH::Emitter>(m_sub, "Emitter")
.def(py::init<>([](SPH::FluidModel *model,
const unsigned int width, const unsigned int height,
const Vector3r &pos, const Matrix3r & rotation,
const Real velocity,
const unsigned int type = 0){
return SPH::Emitter(model, width, height, pos, rotation, velocity, type);
}))
.def("emitParticles", &SPH::Emitter::emitParticles)
.def("setEmitStartTime", &SPH::Emitter::setEmitStartTime)
.def("setEmitEndTime", &SPH::Emitter::setEmitEndTime)
.def("getPosition", &SPH::Emitter::getPosition)
.def("setPosition", &SPH::Emitter::setPosition)
.def("getRotation", &SPH::Emitter::getRotation)
.def("setRotation", &SPH::Emitter::setRotation)
.def("getVelocity", &SPH::Emitter::getVelocity)
.def("setVelocity", &SPH::Emitter::setVelocity)
.def_static("getSize", &SPH::Emitter::getSize)
.def("step", &SPH::Emitter::step)
.def("reset", &SPH::Emitter::reset)
.def("saveState", &SPH::Emitter::saveState)
.def("loadState", &SPH::Emitter::loadState);
py::bind_pointer_vector<std::vector<SPH::Emitter*>>(m_sub, "EmitterVector");
// ---------------------------------------
// Emitter System Class
// ---------------------------------------
py::class_<SPH::EmitterSystem>(m_sub, "EmitterSystem")
.def(py::init<>([](SPH::FluidModel* model){
return SPH::EmitterSystem(model);
}))
.def("enableReuseParticles", &SPH::EmitterSystem::enableReuseParticles)
.def("disableReuseParticles", &SPH::EmitterSystem::disableReuseParticles)
.def("addEmitter", &SPH::EmitterSystem::addEmitter)
.def("numEmitters", &SPH::EmitterSystem::numEmitters)
.def("getEmitters", &SPH::EmitterSystem::getEmitters, py::return_value_policy::reference_internal)
.def("numReusedParticles", &SPH::EmitterSystem::numReusedParticles)
.def("numEmittedParticles", &SPH::EmitterSystem::numEmittedParticles)
.def("step", &SPH::EmitterSystem::step)
.def("reset", &SPH::EmitterSystem::reset)
.def("saveState", &SPH::EmitterSystem::saveState)
.def("loadState", &SPH::EmitterSystem::loadState);
}