public MelonEntity(Player owner, Vector3 position, Vector3 velocity, World world) : base(position) { this.owner = owner; this.world = world; // Setup physics physicsBody = new PhysicsBodyComponent(new Vector3(2f), 0.0001f); AddComponent(physicsBody); physicsBody.Velocity = velocity * 400; physicsBody.CanCollideWithSoft = true; physicsBody.CanBePushedBySoft = false; physicsBody.IsAffectedByGravity = true; physicsBody.OnCollision += PhysicsBody_OnCollision; // Setup renderer if (GlobalNetwork.IsClient) { renderer = new VoxelRenderComponent(); AddComponent(renderer); renderer.VoxelObject = AssetManager.LoadVoxelObject("Models/melon.aosm", BufferUsageHint.StaticDraw); } }
public EditorObject(Vector3 position) : base(position) { renderComponent = new VoxelRenderComponent(); AddComponent(renderComponent); EditorName = GetType().Name; }
public Character(Vector3 position, float height, float crouchHeight, float radius) : base(position) { AddComponent(CharacterController = new CharacterController(new Vector3(radius * 2, height, radius * 2), crouchHeight)); if (GlobalNetwork.IsClient) { AddComponent(Renderer = new VoxelRenderComponent()); } }
public CommandPost(Vector3 position, Team team) : base(position) { startPosition = position; Team = team; positionAnim = new Vector3Anim(); // Setup physics body float cubeSize = 1.5f; // blockSize * dims Vector3 size = new Vector3(cubeSize * 9, cubeSize * 10, cubeSize * 7); PhysicsBody = new VoxelPhysicsBody(size, 2f, cubeSize); AddComponent(PhysicsBody); PhysicsBody.CanCollideWithSoft = true; PhysicsBody.CanBePushedBySoft = false; PhysicsBody.IsAffectedByGravity = true; PhysicsBody.CanBeSteppedOn = false; if (!GlobalNetwork.IsServer) { // Setup renderer renderer = new VoxelRenderComponent(); AddComponent(renderer); string modelPath = team == Team.A ? "Models/commandpost-red.aosm" : "Models/commandpost-blue.aosm"; renderer.VoxelObject = AssetManager.LoadVoxelObject(modelPath, BufferUsageHint.StaticDraw); if (commandpostIconTex == null) { commandpostIconTex = GLoader.LoadTexture("Textures/Gui/commandpost.png"); } // Setup icon IconRenderer icon = new IconRenderer(); AddComponent(icon); icon.Size = new Vector2(16, 16); icon.Image = new Image(commandpostIconTex, team == Team.A ? new Color(255, 0, 0, 128) : new Color(0, 0, 255, 128)); icon.Offset = renderer.VoxelObject.UnitSize / 2f; } }
public Item(ItemManager manager, ItemType type) { Manager = manager; Type = type; ThirdpersonScale = 1f; if (GlobalNetwork.IsClient) { Renderer = new VoxelRenderComponent(); Renderer.OnlyRenderFor = RenderPass.Normal; AddComponent(Renderer); } Config = InitializeConfig(); IsEnabled = false; IsDrawable = false; }
public GrenadeEntity(Player owner, Vector3 position, Vector3 velocity, World world, float throwPower) : base(position - new Vector3(0.75f)) { this.owner = owner; this.world = world; // Setup physics PhysicsBody = new PhysicsBodyComponent(new Vector3(1.5f), 0.0001f); AddComponent(PhysicsBody); PhysicsBody.Velocity = velocity * throwPower; PhysicsBody.CanCollideWithSoft = false; PhysicsBody.BounceOnWallCollision = true; PhysicsBody.BounceOnVerticalCollision = true; PhysicsBody.VerticalBounceFalloff = 0.8f; PhysicsBody.HorizontalBounceFalloff = 0.7f; PhysicsBody.Friction = 0.2f; // Setup renderer if (GlobalNetwork.IsClient) { renderer = new VoxelRenderComponent(); AddComponent(renderer); renderer.VoxelObject = AssetManager.LoadVoxelObject("Models/grenade.aosm", BufferUsageHint.StaticDraw); AudioBuffer bounceAudioBuffer = AssetManager.LoadSound("Weapons/Grenade/Bounce.wav"); if (bounceAudioBuffer != null) { bounceAudioSource = new AudioSource(bounceAudioBuffer); bounceAudioSource.MaxDistance = 200; bounceAudioSource.Gain = 0.25f; } PhysicsBody.OnCollision += PhysicsBody_OnCollision; } }
public void Batch(VoxelRenderComponent component) { batch.BatchItem(component.VoxelObject, component, component.RenderFront); }