abstract.cc core.object - noko3/cc-core GitHub Wiki

Object

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.


Abstract

Almost everything is an object

Object is something available for seeing or hearing or occasionally interacting with inside in-game 3D space. For example a piece of terrain, a spaceship or a cloud would be an object.

Some of the environment-related stuff such as atmosphere (sun, sky, ubiquitous fog), weather effects and other undefinedFIXME things.

The object library MUST implement the following:

  1. Generic static object type (cc_object)
    The type SHALL contain the data regarding the object's position, orientation, size, used materials, and meshes: just enough to draw an object on the screen.
  2. Generic movable object type (movable : cc_object)
    The type SHALL contain enough data to describe a generic moving object. This includes the object's linear speed, acceleration vector and a rotation vector. The type MAY also implement other fields useful for accurate prediction of an object's position in a short future period of time.
  3. Generic composite object type (composite : cc_object)
    The type SHALL represent a bound object group. Thus it MUST store the list of attached objects. It also SHOULD handle the way objects are connected to each other (e.g. welded or hinged).
  4. Physics collision model: solid, rigid, ... (solid:cc_object, rigid:solid)
    The type SHALL describe the physics model of an object:
    • Solid body objects MUST at least have a collision model and a weight fields;
    • Rigid bodies, in addition to the solid body attributes, MUST have a deformation model. The deformation model represents the difference between the original and the deformed meshes.
  5. Generic interactive object (interactive: input_source, output_sink; emitter: output_sink, cc_object; detector: input_source, cc_object)
    The type MUST handle data input and output. The way it does it is currently undefinedFIXME.
⚠️ **GitHub.com Fallback** ⚠️