mirror of
https://github.com/MapMakersAndProgrammers/alternativa3d-archive.git
synced 2025-10-26 01:49:05 -07:00
73 lines
1.9 KiB
Plaintext
73 lines
1.9 KiB
Plaintext
package com.alternativagame.engine3d.skin {
|
|
import com.alternativagame.engine3d.Event3D;
|
|
import com.alternativagame.engine3d.engine3d;
|
|
import com.alternativagame.engine3d.material.Material;
|
|
import com.alternativagame.engine3d.material.ObjectMaterial;
|
|
import com.alternativagame.engine3d.object.SkinObject3D;
|
|
import com.alternativagame.type.Vector;
|
|
|
|
import flash.display.Shape;
|
|
import flash.events.MouseEvent;
|
|
import flash.geom.Point;
|
|
|
|
use namespace engine3d;
|
|
|
|
public class ObjectSkin extends Skin {
|
|
|
|
use namespace engine3d;
|
|
|
|
private var hit:Array;
|
|
|
|
public function ObjectSkin(object:SkinObject3D) {
|
|
super(object);
|
|
}
|
|
|
|
override engine3d function draw():void {
|
|
super.draw();
|
|
|
|
var material:ObjectMaterial = ObjectMaterial(this.material);
|
|
|
|
alpha = material.alpha;
|
|
blendMode = material.blendMode;
|
|
|
|
// Отрисовка хит-области
|
|
if (hit != material.hit) {
|
|
hit = material.hit;
|
|
with (graphics) {
|
|
clear();
|
|
beginFill(0, 0);
|
|
if (hit.length > 2) {
|
|
moveTo(hit[hit.length-1].x, hit[hit.length-1].y);
|
|
for (var i:uint = 0; i < hit.length; i++) {
|
|
lineTo(hit[i].x, hit[i].y);
|
|
}
|
|
} else {
|
|
drawDefaultHit();
|
|
}
|
|
endFill();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected function drawDefaultHit():void {}
|
|
|
|
override protected function updateCoords():void {
|
|
var canvasCoords:Vector = object.canvasCoords;
|
|
x = canvasCoords.x;
|
|
y = -canvasCoords.z;
|
|
}
|
|
|
|
override engine3d function get interactive():Boolean {
|
|
return object.interactive;
|
|
}
|
|
|
|
override engine3d function get material():Material {
|
|
return SkinObject3D(object).material;
|
|
}
|
|
|
|
override engine3d function getIntersectionCoords(canvasCoords:Point):Vector {
|
|
return new Vector(canvasCoords.x, object.canvasCoords.y, -canvasCoords.y);
|
|
}
|
|
|
|
}
|
|
} |