File: EffectHost.h

package info (click to toggle)
freespace2 25.0.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 47,232 kB
  • sloc: cpp: 657,500; ansic: 22,305; sh: 293; python: 200; makefile: 198; xml: 181
file content (42 lines) | stat: -rw-r--r-- 1,142 bytes parent folder | download
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
#pragma once

#include "object/object.h"
#include "globalincs/pstypes.h"
#include "math/vecmat.h"

#include <optional>

class EffectHost {

protected:
	matrix m_orientationOverride;
	bool m_orientationOverrideRelative;

	EffectHost(matrix orientationOverride, bool orientationOverrideRelative) : m_orientationOverride(orientationOverride), m_orientationOverrideRelative(orientationOverrideRelative) {}

public:
	virtual ~EffectHost() = default;

	virtual std::pair<vec3d, matrix> getPositionAndOrientation(bool relativeToParent, float interp, const std::optional<vec3d>& tabled_offset) const = 0;

	virtual vec3d getVelocity() const = 0;

	virtual float getVelocityMagnitude() const {
		vec3d velocity = getVelocity();
		return vm_vec_mag_quick(&velocity);
	}

	virtual std::pair<int, int> getParentObjAndSig() const { return {-1, -1}; }

	virtual float getLifetime() const { return -1.f; }

	virtual float getScale() const { return 1.f; }

	virtual float getParticleMultiplier() const { return 1.f; }

	virtual float getHostRadius() const { return 0.f; }

	virtual bool isValid() const { return true; }

	virtual void setupProcessing() {}
};