Visible 3D entity in the game world

Similar to Sprite which is in 2D.

Each actor associates a model to the position center. The appearance is modified by rotation, scale and alpha, as well as the attributes of model itself.

import gamnit::depth

# Load model from the assets folder
var model = new Model("path/in/assets.obj")

# Create and configure an actor
var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0))
actor.scale = 2.0

# Add to the visible game world
app.actors.add actor

Introduced properties

fun alpha: Float

gamnit :: Actor :: alpha

Transparency applied to the model on draw
fun alpha=(alpha: Float)

gamnit :: Actor :: alpha=

Transparency applied to the model on draw
fun center: Point3d[Float]

gamnit :: Actor :: center

Position of this sprite in world coordinates
fun center=(center: Point3d[Float])

gamnit :: Actor :: center=

Position of this sprite in world coordinates
init defaultinit(model: Model, center: Point3d[Float])

gamnit :: Actor :: defaultinit

fun model: Model

gamnit :: Actor :: model

Model used to draw this actor
protected fun model=(model: Model)

gamnit :: Actor :: model=

Model used to draw this actor
fun pitch: Float

gamnit :: Actor :: pitch

Rotation around the X axis (+ looks up, - looks down)
fun pitch=(pitch: Float)

gamnit :: Actor :: pitch=

Rotation around the X axis (+ looks up, - looks down)
fun roll: Float

gamnit :: Actor :: roll

Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
fun roll=(roll: Float)

gamnit :: Actor :: roll=

Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
fun scale: Float

gamnit :: Actor :: scale

Scale applied to the model
fun scale=(scale: Float)

gamnit :: Actor :: scale=

Scale applied to the model
fun yaw: Float

gamnit :: Actor :: yaw

Rotation around the Y axis (+ turns left, - turns right)
fun yaw=(yaw: Float)

gamnit :: Actor :: yaw=

Rotation around the Y axis (+ turns left, - turns right)

Redefined properties

redef type SELF: Actor

gamnit $ Actor :: SELF

Type of this instance, automatically specialized in every class

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun alpha: Float

gamnit :: Actor :: alpha

Transparency applied to the model on draw
fun alpha=(alpha: Float)

gamnit :: Actor :: alpha=

Transparency applied to the model on draw
fun center: Point3d[Float]

gamnit :: Actor :: center

Position of this sprite in world coordinates
fun center=(center: Point3d[Float])

gamnit :: Actor :: center=

Position of this sprite in world coordinates
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
init defaultinit(model: Model, center: Point3d[Float])

gamnit :: Actor :: defaultinit

fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun model: Model

gamnit :: Actor :: model

Model used to draw this actor
protected fun model=(model: Model)

gamnit :: Actor :: model=

Model used to draw this actor
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun pitch: Float

gamnit :: Actor :: pitch

Rotation around the X axis (+ looks up, - looks down)
fun pitch=(pitch: Float)

gamnit :: Actor :: pitch=

Rotation around the X axis (+ looks up, - looks down)
fun roll: Float

gamnit :: Actor :: roll

Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
fun roll=(roll: Float)

gamnit :: Actor :: roll=

Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
fun scale: Float

gamnit :: Actor :: scale

Scale applied to the model
fun scale=(scale: Float)

gamnit :: Actor :: scale=

Scale applied to the model
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun yaw: Float

gamnit :: Actor :: yaw

Rotation around the Y axis (+ turns left, - turns right)
fun yaw=(yaw: Float)

gamnit :: Actor :: yaw=

Rotation around the Y axis (+ turns left, - turns right)
package_diagram gamnit::Actor Actor core::Object Object gamnit::Actor->core::Object

Parents

interface Object

core :: Object

The root of the class hierarchy.

Class definitions

gamnit $ Actor
# Visible 3D entity in the game world
#
# Similar to `gamnit::Sprite` which is in 2D.
#
# Each actor associates a `model` to the position `center`.
# The appearance is modified by `rotation`, `scale` and `alpha`,
# as well as the attributes of `model` itself.
#
# ~~~
# import gamnit::depth
#
# # Load model from the assets folder
# var model = new Model("path/in/assets.obj")
#
# # Create and configure an actor
# var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0))
# actor.scale = 2.0
#
# # Add to the visible game world
# app.actors.add actor
# ~~~
class Actor

	# Model used to draw this actor
	var model: Model

	# Position of this sprite in world coordinates
	var center: Point3d[Float] is writable

	# Rotation around the X axis (+ looks up, - looks down)
	#
	# Positive values look up, and negative look down.
	#
	# All actor rotations follow the right hand rule.
	# The default orientation of the model should look towards -Z.
	var pitch = 0.0 is writable

	# Rotation around the Y axis (+ turns left, - turns right)
	#
	# Positive values turn `self` to the left, and negative values to the right.
	#
	# All actor rotations follow the right hand rule.
	# The default orientation of the model should look towards -Z.
	var yaw = 0.0 is writable

	# Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
	#
	# From the default camera point of view, looking down on the Z axis,
	# positive values turn `self` counterclockwise, and negative values clockwise.
	#
	# All actor rotations follow the right hand rule.
	# The default orientation of the model should look towards -Z.
	var roll = 0.0 is writable

	# Scale applied to the model
	var scale = 1.0 is writable

	# Transparency applied to the model on draw
	#
	# This value may be ignored by some materials.
	# Non-opaque values may result in artifacts as there is no specialized
	# support for transparent models and the depth buffer.
	var alpha = 1.0 is writable
end
lib/gamnit/depth/depth_core.nit:20,1--83,3