summaryrefslogtreecommitdiff
path: root/Runtime/Filters/Misc/LineRenderer.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Filters/Misc/LineRenderer.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Filters/Misc/LineRenderer.h')
-rw-r--r--Runtime/Filters/Misc/LineRenderer.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/Runtime/Filters/Misc/LineRenderer.h b/Runtime/Filters/Misc/LineRenderer.h
new file mode 100644
index 0000000..3d05758
--- /dev/null
+++ b/Runtime/Filters/Misc/LineRenderer.h
@@ -0,0 +1,61 @@
+#ifndef LINERENDERER_H
+#define LINERENDERER_H
+
+#include <vector>
+#include "Runtime/Filters/Renderer.h"
+#include "Runtime/Math/Color.h"
+#include "Runtime/Math/Vector3.h"
+#include "Runtime/Geometry/AABB.h"
+#include "LineBuilder.h"
+
+
+
+// Renders a freeform texture/colored line in 3D space.
+// (heavily based on TrailRenderer code, so most comments apply to both)
+class LineRenderer : public Renderer {
+public:
+ REGISTER_DERIVED_CLASS (LineRenderer, Renderer)
+ DECLARE_OBJECT_SERIALIZE (LineRenderer)
+
+ LineRenderer (MemLabelId label, ObjectCreationMode mode);
+
+ virtual void Reset ();
+
+ virtual void Render (int materialIndex, const ChannelAssigns& channels);
+
+ // Can operate in either local or world space, so we need to fill whole transform info ourselves
+ virtual void UpdateTransformInfo();
+
+ void SetPosition (int index, const Vector3f& position);
+
+ void SetVertexCount(int count);
+
+ void SetColors(const ColorRGBAf& c0, const ColorRGBAf& c1) { m_Parameters.color1 = c0; m_Parameters.color2 = c1; SetDirty(); }
+
+ void SetWidth(float startWidth,float endWidth)
+ {
+ m_Parameters.startWidth = startWidth;
+ m_Parameters.endWidth = endWidth;
+ BoundsChanged();
+ SetDirty();
+ }
+
+ bool GetUseWorldSpace () { return m_UseWorldSpace; }
+ void SetUseWorldSpace (bool space);
+
+ void AwakeFromLoad(AwakeFromLoadMode mode);
+ static void InitializeClass ();
+
+protected:
+ // from Renderer
+ virtual void UpdateRenderer();
+
+private:
+// bool m_BoundsDirty;
+ bool m_UseWorldSpace; ///< Draw lines in worldspace (or localspace)
+ LineParameters m_Parameters;
+ typedef UNITY_VECTOR(kMemRenderer,Vector3f) PositionVector;
+ PositionVector m_Positions;
+};
+
+#endif