Raw File
Ground.h
#pragma once

#include "sim/SimObj.h"

class cGround : public cSimObj
{
public:
	enum eGroundType
	{
		eGroundTypeFlat,
		eGroundTypeVar2D,
		eGroundTypeMax,
		eGroundTypeInvalid
	};

	virtual ~cGround();

	virtual void Init(std::shared_ptr<cWorld> world);
	virtual void Update(const tVector& bound_min, const tVector& bound_max);
	virtual void Clear();

	virtual double SampleHeight(const tVector& pos) const;
	virtual double SampleHeight(const tVector& pos, bool& out_valid_sample) const;
	virtual void SampleHeight(const Eigen::MatrixXd& pos, Eigen::VectorXd& out_h) const;

	virtual eGroundType GetGroundType() const;
	virtual void SetTerrainParams(const Eigen::VectorXd& params);

protected:
	Eigen::VectorXd mTerrainParams;

	cGround();
};
back to top