<commit_before>#pragma once

#include "types.h"
#include "scene/hitable.h"
#include "math/mat4.h"
#include "geometry/geomparam.h"

#include <vector>

namespace aten
{
	class transformable : public hitable {
		static std::vector<transformable*> g_transformables;
		static std::vector<transformable*> g_transformablesPolygonObjList;

	public:
		transformable();
		virtual ~transformable();

	protected:
		transformable(GeometryType type);

	public:
		virtual void getSamplePosNormalArea(
			aten::hitable::SamplePosNormalPdfResult* result,
			const mat4& mtxL2W,
			sampler* sampler) const = 0;

		virtual void evalHitResult(
			const ray& r,
			const mat4& mtxL2W,
			hitrecord& rec,
			const Intersection& isect) const = 0;

		virtual const GeomParameter& getParam() const
		{
			AT_ASSERT(false);
			return std::move(GeomParameter(GeometryType::GeometryTypeMax));
		}

		virtual void getMatrices(
			aten::mat4& mtxL2W,
			aten::mat4& mtxW2L) const
		{
			mtxL2W.identity();
			mtxW2L.identity();
		}

		int id() const
		{
			return m_id;
		}

		virtual void collectTriangles(std::vector<aten::PrimitiveParamter>& triangles) const
		{
			// Nothing is done...
			AT_ASSERT(false);
		}

		static uint32_t getShapeNum();
		
		static transformable* getShape(uint32_t idx);
		static transformable* getShapeAsHitable(const hitable* shape);

		static int findIdx(const transformable* shape);
		static int findIdxAsHitable(const hitable* shape);
		static int findIdxFromPolygonObjList(const hitable* shape);
		
		static const std::vector<transformable*>& getShapes();
		static const std::vector<transformable*>& getShapesPolygonObjList();

		static void gatherAllTransformMatrixAndSetMtxIdx(std::vector<aten::mat4>& mtxs);
<commit_msg>Remove assertion.<commit_after>#pragma once

#include "types.h"
#include "scene/hitable.h"
#include "math/mat4.h"
#include "geometry/geomparam.h"

#include <vector>

namespace aten
{
	class transformable : public hitable {
		static std::vector<transformable*> g_transformables;
		static std::vector<transformable*> g_transformablesPolygonObjList;

	public:
		transformable();
		virtual ~transformable();

	protected:
		transformable(GeometryType type);

	public:
		virtual void getSamplePosNormalArea(
			aten::hitable::SamplePosNormalPdfResult* result,
			const mat4& mtxL2W,
			sampler* sampler) const = 0;

		virtual void evalHitResult(
			const ray& r,
			const mat4& mtxL2W,
			hitrecord& rec,
			const Intersection& isect) const = 0;

		virtual const GeomParameter& getParam() const
		{
			AT_ASSERT(false);
			return std::move(GeomParameter(GeometryType::GeometryTypeMax));
		}

		virtual void getMatrices(
			aten::mat4& mtxL2W,
			aten::mat4& mtxW2L) const
		{
			mtxL2W.identity();
			mtxW2L.identity();
		}

		int id() const
		{
			return m_id;
		}

		virtual void collectTriangles(std::vector<aten::PrimitiveParamter>& triangles) const
		{
			// Nothing is done...
		}

		static uint32_t getShapeNum();
		
		static transformable* getShape(uint32_t idx);
		static transformable* getShapeAsHitable(const hitable* shape);

		static int findIdx(const transformable* shape);
		static int findIdxAsHitable(const hitable* shape);
		static int findIdxFromPolygonObjList(const hitable* shape);
		
		static const std::vector<transformable*>& getShapes();
		static const std::vector<transformable*>& getShapesPolygonObjList();

		static void gatherAllTransformMatrixAndSetMtxIdx(std::vector<aten::mat4>& mtxs);

{'fraction_non_alphanumeric': 0.10985178727114212, 'fraction_numerical': 0.010462074978204011, 'mean_word_length': 5.006980802792321, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3728900', 'n_tokens_mistral': 1283, 'n_tokens_neox': 1121, 'n_words': 262}