#pragma once #include "lc_mesh.h" #include "lc_array.h" class lcScene { public: lcScene(); void SetActiveSubmodelInstance(lcPiece* ActiveSubmodelInstance, const lcMatrix44& ActiveSubmodelTransform) { mActiveSubmodelInstance = ActiveSubmodelInstance; mActiveSubmodelTransform = ActiveSubmodelTransform; } lcPiece* GetActiveSubmodelInstance() const { return mActiveSubmodelInstance; } void SetDrawInterface(bool DrawInterface) { mDrawInterface = DrawInterface; } bool GetDrawInterface() const { return mDrawInterface; } void SetAllowWireframe(bool AllowWireframe) { mAllowWireframe = AllowWireframe; } lcMatrix44 ApplyActiveSubmodelTransform(const lcMatrix44& WorldMatrix) const { return !mActiveSubmodelInstance ? WorldMatrix : lcMul(WorldMatrix, mActiveSubmodelTransform); } void Begin(const lcMatrix44& ViewMatrix); void End(); void AddMesh(lcMesh* Mesh, const lcMatrix44& WorldMatrix, int ColorIndex, lcRenderMeshState State, int Flags); void AddInterfaceObject(const lcObject* Object) { mInterfaceObjects.Add(Object); } void Draw(lcContext* Context) const; void DrawInterfaceObjects(lcContext* Context) const; protected: void DrawRenderMeshes(lcContext* Context, int PrimitiveTypes, bool EnableNormals, bool DrawTranslucent, bool DrawTextured) const; lcMatrix44 mViewMatrix; lcMatrix44 mActiveSubmodelTransform; lcPiece* mActiveSubmodelInstance; bool mDrawInterface; bool mAllowWireframe; lcArray mRenderMeshes; lcArray mOpaqueMeshes; lcArray mTranslucentMeshes; lcArray mInterfaceObjects; bool mHasTexture; };