PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
copakond Namespace Reference

PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM. More...

Classes

class  Bezier
 Bezier curve spline implementation. More...
class  CatmullRoll
 Catmull-Rom spline implementation. More...
class  Spline
 Base class for parameterized spline animations. More...
class  Camera
 Camera for generating view and projection matrices. More...
class  Geometry
 Base class for all spatial objects, serving as a node in the scene graph. More...
class  Material
 Defines surface properties and texture maps for rendering a mesh. More...
class  Fog
 Simple linear fog parameters. More...
struct  LightUniforms
 Caches shader uniform locations for a specific light instance to avoid repeated lookups. More...
class  Light
 Base class for scene lighting calculations. More...
class  DirectionalLight
class  PointLight
class  SpotLight
class  CollisionBox
 Oriented Bounding Box (OBB) collider. More...
struct  CollisionResult
 Container for collision response data. More...
class  CollisionDetector
 Static utility class implementing intersection math (SAT, Sphere overlap). More...
struct  PhysicsMaterial
 Physical properties affecting collision resolution. More...
class  CollisionShape
 Base class for physics colliders, acting as an invisible (or debug) mesh. More...
class  CollisionSphere
 Spherical collider, optimized for fast radius-based intersection tests. More...
class  RigidBody
 Kinematic object affected by gravity, friction, and collision resolution. More...
class  RigidSphere
 Kinematic sphere that automatically rolls based on its horizontal velocity. More...
class  ImageLabel
 Static 2D image plane, implemented as a paused 1-frame image sequence. More...
class  ImageMoving
 2D plane with an animated (scrolling) texture map More...
class  ImageSequenceLabel
 2D plane that plays an animation by cycling through a sprite sheet texture More...
class  TextLabel
 Dynamically generates 2D geometry to render text using a bitmap font atlas. More...
struct  SubMesh
 Represents a part of a mesh that uses a specific material. More...
class  Mesh
 Base drawable 3D object containing geometry and material data. More...
class  ObjMesh
 Mesh loaded from an external .obj file. More...
class  Skybox
 Environmental background cube map with day/night cycle blending. More...
class  Input
 Global input manager tracking keyboard states and mouse deltas. More...
class  MtlLoader
class  ObjLoader
 Parses Wavefront .obj files and extracts vertices, normals, UVs, and submeshes. More...
struct  BowlingLightData
class  BowlingGame
 Core logic manager handling bowling rules, scoring, and lane interactions. More...
class  BowlingScene
 Main playable scene containing the bowling alley environment and game loop. More...
class  CollisionPin
 Specialized sphere collider for bowling pins with custom fall physics. More...
class  InputControllerBowling
 Bowling-specific player controller handling throwing mechanics and scene interactions. More...
class  SampleScene
 Demonstration scene featuring a working procedural clock and basic physics interactions. More...
class  Scene
 Base class for all game scenes, managing lifecycle, rendering, and scene entities. More...
class  TemplateScene
 Empty starter scene with initialized lighting, skybox, and a player controller. More...
class  Controller
 Base interface for input handling and logic updates. More...
class  InputController
 Handles player movement, camera perspective switching, and object interaction logic. More...
struct  StateSaved
 Stores a snapshot of object's transform for saving or undo operations. More...
class  LevelEditor
 Runtime editor utility allowing the user to pick, move, and save mesh transformations. More...
class  Shader
 Core manager for shader program compilation, uniform binding, and rendering. More...

Enumerations

enum class  ShapeType { BOX , SPHERE }
enum class  BowlingVideoEvent {
  SPLIT , SPARE , STRIKE , MISS ,
  END
}
enum class  BowlingLightMode { NORMAL , OFF , DISCO }
enum class  PinState { IDLE , FALLING , DEAD }
enum class  StencilSelect { ALL , MESHES , COLLISION }
 Determines which objects are written to the stencil buffer for mouse picking. More...
enum class  EditMode { NONE , TRANSLATE , ROTATE , SCALE }
 Transformation modes for the runtime level editor. More...
enum class  EditAxe { NONE , X , Y , Z }
 Axis lock for current transformation. More...

Functions

void menuCallback (int option)
void init ()
 Initializes OpenGL context, scene data, and sets up GLUT callbacks.
void draw ()
 Main render loop. Handles updates, physics, and rendering of all scene elements.
void keyboardInputEvent (unsigned char key, int x, int y)
void specKeyboardInputEvent (int key, int x, int y)
void keyboardUpInputEvent (unsigned char key, int x, int y)
void specKeyboardUpInputEvent (int key, int x, int y)
void mouseButtonEvent (int button, int state, int x, int y)
void mouseMoveEvent (int x, int y)
void mouseWheelEvent (int wheel, int direction, int x, int y)
void screenResizeEvent (int width, int height)
 Handles window resize events to maintain correct projection aspect ratio.
CollisionResult collisionFalse ()
CollisionResult collisionTrue (const glm::vec3 &normal, const glm::vec3 &reflection)

Variables

float SIMULATION_SPEED = 1.0f
int winWidth = 1280
int winHeight = 720
Shadershader
Inputinput
ScenecurrentScene
StencilSelect stencilMode = StencilSelect::MESHES

Detailed Description

PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.

Enumeration Type Documentation

◆ BowlingLightMode

enum class copakond::BowlingLightMode
strong
Enumerator
NORMAL 
OFF 
DISCO 

◆ BowlingVideoEvent

enum class copakond::BowlingVideoEvent
strong
Enumerator
SPLIT 
SPARE 
STRIKE 
MISS 
END 

◆ EditAxe

enum class copakond::EditAxe
strong

Axis lock for current transformation.

Enumerator
NONE 

◆ EditMode

enum class copakond::EditMode
strong

Transformation modes for the runtime level editor.

Enumerator
NONE 
TRANSLATE 
ROTATE 
SCALE 

◆ PinState

enum class copakond::PinState
strong
Enumerator
IDLE 
FALLING 
DEAD 

◆ ShapeType

enum class copakond::ShapeType
strong
Enumerator
BOX 
SPHERE 

◆ StencilSelect

enum class copakond::StencilSelect
strong

Determines which objects are written to the stencil buffer for mouse picking.

Enumerator
ALL 
MESHES 
COLLISION 

Function Documentation

◆ collisionFalse()

CollisionResult copakond::collisionFalse ( )

◆ collisionTrue()

CollisionResult copakond::collisionTrue ( const glm::vec3 & normal,
const glm::vec3 & reflection )

◆ draw()

void copakond::draw ( )

Main render loop. Handles updates, physics, and rendering of all scene elements.

◆ init()

void copakond::init ( )

Initializes OpenGL context, scene data, and sets up GLUT callbacks.

◆ keyboardInputEvent()

void copakond::keyboardInputEvent ( unsigned char key,
int x,
int y )

◆ keyboardUpInputEvent()

void copakond::keyboardUpInputEvent ( unsigned char key,
int x,
int y )

◆ menuCallback()

void copakond::menuCallback ( int option)

◆ mouseButtonEvent()

void copakond::mouseButtonEvent ( int button,
int state,
int x,
int y )

◆ mouseMoveEvent()

void copakond::mouseMoveEvent ( int x,
int y )

◆ mouseWheelEvent()

void copakond::mouseWheelEvent ( int wheel,
int direction,
int x,
int y )

◆ screenResizeEvent()

void copakond::screenResizeEvent ( int width,
int height )

Handles window resize events to maintain correct projection aspect ratio.

◆ specKeyboardInputEvent()

void copakond::specKeyboardInputEvent ( int key,
int x,
int y )

◆ specKeyboardUpInputEvent()

void copakond::specKeyboardUpInputEvent ( int key,
int x,
int y )

Variable Documentation

◆ currentScene

Scene* copakond::currentScene

◆ input

Input* copakond::input

◆ shader

Shader* copakond::shader

◆ SIMULATION_SPEED

float copakond::SIMULATION_SPEED = 1.0f

◆ stencilMode

StencilSelect copakond::stencilMode = StencilSelect::MESHES

◆ winHeight

int copakond::winHeight = 720

◆ winWidth

int copakond::winWidth = 1280