kiki/coffee/gate.coffee
monsterkodi bd6e7823e4 gears
2016-08-20 19:18:37 +02:00

161 lines
5.6 KiB
CoffeeScript

# 0000000 0000000 000000000 00000000
# 000 000 000 000 000
# 000 0000 000000000 000 0000000
# 000 000 000 000 000 000
# 0000000 000 000 000 00000000
log = require "/Users/kodi/s/ko/js/tools/log"
Vector = require './lib/vector'
Switch = require './switch'
Light = require './light'
Action = require './action'
class Gate extends Switch
isSpaceEgoistic: -> false
constructor: (active) ->
super active
@ENTER_EVENT = @addEventWithName "enter"
@value = 0.0
@getActionWithId(Action.ROTATE).duration = 3000
@sound_on = 'GATE_OPEN'
@sound_off = 'GATE_CLOSE'
createLight: ->
@light = new Light
pos: @position
radius: 12.0
shadow: true
createMesh: () ->
torusRadius = 0.05
t1 = new THREE.TorusGeometry 0.5-torusRadius, torusRadius, 16, 32
@mat = new THREE.MeshPhongMaterial
color: 0xff0000
side: THREE.FrontSide
shading: THREE.SmoothShading
shininess: 5
@mesh = new THREE.Mesh t1, @mat
t2 = new THREE.TorusGeometry 0.5-torusRadius, torusRadius, 16, 32
t3 = new THREE.TorusGeometry 0.5-torusRadius, torusRadius, 16, 32
t2.rotateY Vector.DEG2RAD 90
t3.rotateX Vector.DEG2RAD 90
t2.merge t3
@tors = new THREE.Mesh t2, @mat
@tors.castShadow = true
@mesh.add @tors
@mesh.castShadow = true
@mesh
bulletImpact: ->
newCellMate: (object) ->
# log "gate.newCellMate --------------------------- #{object.name} #{@active}"
if object.name == 'player' and @active
world.playSound 'GATE_WARP'
# log "gate.newCellMate --------------------------- trigger enter event actions"
@events[@ENTER_EVENT].triggerActions()
renderBar: (r,b,h) ->
# glBegin(GL_QUAD_STRIP);
# glNormal3f(0,1,0);
# glVertex3f(-r, h, -r); glVertex3f(-b, h, -b);
# glVertex3f( r, h, -r); glVertex3f( b, h, -b);
# glVertex3f( r, h, r); glVertex3f( b, h, b);
# glVertex3f(-r, h, r); glVertex3f(-b, h, b);
# glVertex3f(-r, h, -r); glVertex3f(-b, h, -b);
# glEnd();
# glBegin(GL_QUAD_STRIP);
# glNormal3f(0,-1,0);
# glVertex3f(-b, -h, -b); glVertex3f(-r, -h, -r);
# glVertex3f( b, -h, -b); glVertex3f( r, -h, -r);
# glVertex3f( b, -h, b); glVertex3f( r, -h, r);
# glVertex3f(-b, -h, b); glVertex3f(-r, -h, r);
# glVertex3f(-b, -h, -b); glVertex3f(-r, -h, -r);
# glEnd();
# glBegin(GL_QUADS);
# glNormal3f(0,0,-1);
# glVertex3f(-r, -h, -r); glVertex3f(-r, h, -r);
# glVertex3f( r, h, -r); glVertex3f( r, -h, -r);
# glNormal3f(1,0,0);
# glVertex3f( r, -h, -r); glVertex3f( r, h, -r);
# glVertex3f( r, h, r); glVertex3f( r, -h, r);
# glNormal3f(0,0,1);
# glVertex3f( r, -h, r); glVertex3f( r, h, r);
# glVertex3f(-r, h, r); glVertex3f(-r, -h, r);
# glNormal3f(-1,0,0);
# glVertex3f(-r, -h, r); glVertex3f(-r, h, r);
# glVertex3f(-r, h, -r); glVertex3f(-r, -h, -r);
# glNormal3f(0,0,1);
# glVertex3f(-b, h, -b); glVertex3f(-b, -h, -b);
# glVertex3f( b, -h, -b); glVertex3f( b, h, -b);
# glNormal3f(-1,0,0);
# glVertex3f( b, h, -b); glVertex3f( b, -h, -b);
# glVertex3f( b, -h, b); glVertex3f( b, h, b);
# glNormal3f(0,0,-1);
# glVertex3f( b, h, b); glVertex3f( b, -h, b);
# glVertex3f(-b, -h, b); glVertex3f(-b, h, b);
# glNormal3f(1,0,0);
# glVertex3f(-b, h, b); glVertex3f(-b, -h, b);
# glVertex3f(-b, -h, -b); glVertex3f(-b, h, -b);
# glEnd();
render: () ->
# KColor gate_color = colors[KikiGate_base_color];
# if (active == false)
# gate_color.setAlpha (gate_color.getAlpha()/4.0);
#
# gate_color.glColor();
#
# float v = sin(DEG2RAD(angle));
# float av = kAbs(v);
# float b = 0.29 + av * 0.1;
# float h = 0.1 - av * 0.05;
# float r = 0.49;
# float t = v * (0.49 - h);
# float s = 1.0 - av * 0.5;
#
# glEnable(GL_POLYGON_OFFSET_FILL);
# glPushMatrix();
# glScalef(s, 1.0, s);
# glTranslatef (0, t, 0);
# glPolygonOffset(0.1, 0.1);
# renderBar (r, b, h);
# glTranslatef (0, -2*t, 0);
# glPolygonOffset(0.2, 0.2);
# renderBar (r, b, h);
# glPopMatrix();
#
# glPushMatrix();
# glRotatef (90, 1.0, 0.0, 0.0);
# glScalef(s, 1.0, s);
# glTranslatef (0, t, 0);
# glPolygonOffset(0.3, 0.3);
# renderBar (r, b, h);
# glTranslatef (0, -2*t, 0);
# glPolygonOffset(0.4, 0.4);
# renderBar (r, b, h);
# glPopMatrix();
#
# glPushMatrix();
# glRotatef (-90, 0.0, 0.0, 1.0);
# glScalef(s, 1.0, s);
# glTranslatef (0, t, 0);
# glPolygonOffset(0.5, 0.5);
# renderBar (r, b, h);
# glTranslatef (0, -2*t, 0);
# glPolygonOffset(0.6, 0.6);
# renderBar (r, b, h);
# glPopMatrix();
# glDisable(GL_POLYGON_OFFSET_FILL);
#
# if (active)
# colors[KikiGate_sphere_color].glColor();
# kDisplaySolidSphere(0.20);
module.exports = Gate