-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path02-CompositeModel.as
63 lines (54 loc) · 2.13 KB
/
02-CompositeModel.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "Easy3D.as"
#include "BasicAnimation.as"
#define CLIENT_ONLY
Camera@ camera;
CompositeModel@ model;
Animator@ animator;
IAnimation@ animation;
void onInit(CRules@ this)
{
Render::addScript(Render::layer_prehud, getCurrentScriptName(), "Render", 0);
@camera = Camera();
// Initialize
string texture = "KnightSkin.png";
Model body("ActorBody.obj", texture);
Model head("ActorHead.obj", texture);
Model upperLeftArm("ActorUpperLeftArm.obj", texture);
Model lowerLeftArm("ActorLowerLeftArm.obj", texture);
Model upperRightArm("ActorUpperRightArm.obj", texture);
Model lowerRightArm("ActorLowerRightArm.obj", texture);
Model upperLeftLeg("ActorUpperLeftLeg.obj", texture);
Model lowerLeftLeg("ActorLowerLeftLeg.obj", texture);
Model upperRightLeg("ActorUpperRightLeg.obj", texture);
Model lowerRightLeg("ActorLowerRightLeg.obj", texture);
// Compose
@model = CompositeModel(body)
.Append(CompositeModel(head))
.Append(CompositeModel(upperLeftArm).Append(CompositeModel(lowerLeftArm)))
.Append(CompositeModel(upperRightArm).Append(CompositeModel(lowerRightArm)))
.Append(CompositeModel(upperLeftLeg).Append(CompositeModel(lowerLeftLeg)))
.Append(CompositeModel(upperRightLeg).Append(CompositeModel(lowerRightLeg)));
// Arrange
body.SetTranslation(Vec3f(0, -0.375 * 1.5f, 2.0f));
body.SetRotation(Quaternion().SetFromEulerDegrees(0, 180, 0));
head.SetTranslation(Vec3f(0, 0.75f, 0));
upperLeftArm.SetTranslation(Vec3f(-0.25f, 0.75f, 0));
lowerLeftArm.SetTranslation(Vec3f(-0.125f, -0.375f, -0.125f));
lowerLeftArm.SetScale(Vec3f(0.99f));
upperRightArm.SetTranslation(Vec3f(0.25f, 0.75f, 0));
lowerRightArm.SetTranslation(Vec3f(0.125f, -0.375f, -0.125f));
lowerRightArm.SetScale(Vec3f(0.99f));
lowerLeftLeg.SetTranslation(Vec3f(-0.125f, -0.375f, 0.125f));
lowerLeftLeg.SetScale(Vec3f(0.99f));
lowerRightLeg.SetTranslation(Vec3f(0.125f, -0.375f, 0.125f));
lowerRightLeg.SetScale(Vec3f(0.99f));
}
void Render(int id)
{
Render::SetAlphaBlend(false);
Render::SetZBuffer(true, true);
Render::SetBackfaceCull(false);
Render::ClearZ();
camera.Render();
model.Render();
}